diff --git a/spine-c/spine-c/include/spine/dll.h b/spine-c/spine-c/include/spine/dll.h index ed9c328b5..02714ca45 100644 --- a/spine-c/spine-c/include/spine/dll.h +++ b/spine-c/spine-c/include/spine/dll.h @@ -31,8 +31,6 @@ #ifndef SPINE_SHAREDLIB_H #define SPINE_SHAREDLIB_H -#define SP_API - #ifdef _WIN32 #define DLLIMPORT __declspec(dllimport) #define DLLEXPORT __declspec(dllexport) @@ -43,6 +41,8 @@ #ifdef SPINEPLUGIN_API #define SP_API SPINEPLUGIN_API +#else + #define SP_API #endif #endif /* SPINE_SHAREDLIB_H */ diff --git a/spine-ts/README.md b/spine-ts/README.md index d440bb95f..650661967 100644 --- a/spine-ts/README.md +++ b/spine-ts/README.md @@ -71,10 +71,11 @@ The spine-ts WebGL demos load their image, atlas, and JSON files from our webser - [Meshes](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/meshes.html) - [Skins](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/skins.html) - [Hoverboard](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/hoverboard.html) -- [Transform constraints](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/transforms.html) -- [Tank](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/tank.html) - [Vine](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/vine.html) +- [Clipping](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/clipping.html) - [Stretchyman](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/stretchyman.html) +- [Tank](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/tank.html) +- [Transform constraints](http://rawgit.com/EsotericSoftware/spine-runtimes/3.6/spine-ts/webgl/demos/transforms.html) Please note that Chrome and possibly other browsers do not use the original CORS headers when loading cached resources. After the initial page load for a demo, you may need to forcefully refresh (hold `shift` and click refresh) or clear your browser cache. diff --git a/spine-ts/build/spine-webgl.d.ts b/spine-ts/build/spine-webgl.d.ts index 15e82a8d1..f4187415f 100644 --- a/spine-ts/build/spine-webgl.d.ts +++ b/spine-ts/build/spine-webgl.d.ts @@ -1,1652 +1,1652 @@ declare module spine { - class Animation { - name: string; - timelines: Array; - duration: number; - constructor(name: string, timelines: Array, duration: number); - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - static binarySearch(values: ArrayLike, target: number, step?: number): number; - static linearSearch(values: ArrayLike, target: number, step: number): number; - } - interface Timeline { - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - getPropertyId(): number; - } - enum MixPose { - setup = 0, - current = 1, - currentLayered = 2, - } - enum MixDirection { - in = 0, - out = 1, - } - enum TimelineType { - rotate = 0, - translate = 1, - scale = 2, - shear = 3, - attachment = 4, - color = 5, - deform = 6, - event = 7, - drawOrder = 8, - ikConstraint = 9, - transformConstraint = 10, - pathConstraintPosition = 11, - pathConstraintSpacing = 12, - pathConstraintMix = 13, - twoColor = 14, - } - abstract class CurveTimeline implements Timeline { - static LINEAR: number; - static STEPPED: number; - static BEZIER: number; - static BEZIER_SIZE: number; - private curves; - abstract getPropertyId(): number; - constructor(frameCount: number); - getFrameCount(): number; - setLinear(frameIndex: number): void; - setStepped(frameIndex: number): void; - getCurveType(frameIndex: number): number; - setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; - getCurvePercent(frameIndex: number, percent: number): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class RotateTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATION: number; - static ROTATION: number; - boneIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, degrees: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_X: number; - static PREV_Y: number; - static X: number; - static Y: number; - boneIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, x: number, y: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class ScaleTimeline extends TranslateTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class ShearTimeline extends TranslateTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class ColorTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_R: number; - static PREV_G: number; - static PREV_B: number; - static PREV_A: number; - static R: number; - static G: number; - static B: number; - static A: number; - slotIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class TwoColorTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_R: number; - static PREV_G: number; - static PREV_B: number; - static PREV_A: number; - static PREV_R2: number; - static PREV_G2: number; - static PREV_B2: number; - static R: number; - static G: number; - static B: number; - static A: number; - static R2: number; - static G2: number; - static B2: number; - slotIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class AttachmentTimeline implements Timeline { - slotIndex: number; - frames: ArrayLike; - attachmentNames: Array; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class DeformTimeline extends CurveTimeline { - slotIndex: number; - attachment: VertexAttachment; - frames: ArrayLike; - frameVertices: Array>; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class EventTimeline implements Timeline { - frames: ArrayLike; - events: Array; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class DrawOrderTimeline implements Timeline { - frames: ArrayLike; - drawOrders: Array>; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_MIX: number; - static PREV_BEND_DIRECTION: number; - static MIX: number; - static BEND_DIRECTION: number; - ikConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATE: number; - static PREV_TRANSLATE: number; - static PREV_SCALE: number; - static PREV_SHEAR: number; - static ROTATE: number; - static TRANSLATE: number; - static SCALE: number; - static SHEAR: number; - transformConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_VALUE: number; - static VALUE: number; - pathConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, value: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATE: number; - static PREV_TRANSLATE: number; - static ROTATE: number; - static TRANSLATE: number; - pathConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; - } + class Animation { + name: string; + timelines: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + getPropertyId(): number; + } + enum MixPose { + setup = 0, + current = 1, + currentLayered = 2, + } + enum MixDirection { + in = 0, + out = 1, + } + enum TimelineType { + rotate = 0, + translate = 1, + scale = 2, + shear = 3, + attachment = 4, + color = 5, + deform = 6, + event = 7, + drawOrder = 8, + ikConstraint = 9, + transformConstraint = 10, + pathConstraintPosition = 11, + pathConstraintSpacing = 12, + pathConstraintMix = 13, + twoColor = 14, + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + abstract getPropertyId(): number; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class TwoColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static PREV_R2: number; + static PREV_G2: number; + static PREV_B2: number; + static R: number; + static G: number; + static B: number; + static A: number; + static R2: number; + static G2: number; + static B2: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class DeformTimeline extends CurveTimeline { + slotIndex: number; + attachment: VertexAttachment; + frames: ArrayLike; + frameVertices: Array>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, event: Event): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_BEND_DIRECTION: number; + static MIX: number; + static BEND_DIRECTION: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, mix: number, bendDirection: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, pose: MixPose, direction: MixDirection): void; + } } declare module spine { - class AnimationState { - static emptyAnimation: Animation; - static SUBSEQUENT: number; - static FIRST: number; - static DIP: number; - static DIP_MIX: number; - data: AnimationStateData; - tracks: TrackEntry[]; - events: Event[]; - listeners: AnimationStateListener2[]; - queue: EventQueue; - propertyIDs: IntSet; - mixingTo: TrackEntry[]; - animationsChanged: boolean; - timeScale: number; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, currentPose: MixPose): number; - applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, pose: MixPose, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): TrackEntry; - setEmptyAnimations(mixDuration: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - disposeNext(entry: TrackEntry): void; - _animationsChanged(): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener2): void; - removeListener(listener: AnimationStateListener2): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - next: TrackEntry; - mixingFrom: TrackEntry; - listener: AnimationStateListener2; - trackIndex: number; - loop: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - timelineData: number[]; - timelineDipMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - setTimelineData(to: TrackEntry, mixingToArray: Array, propertyIDs: IntSet): TrackEntry; - hasTimeline(id: number): boolean; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5, - } - interface AnimationStateListener2 { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter2 implements AnimationStateListener2 { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } + class AnimationState { + static emptyAnimation: Animation; + static SUBSEQUENT: number; + static FIRST: number; + static DIP: number; + static DIP_MIX: number; + data: AnimationStateData; + tracks: TrackEntry[]; + events: Event[]; + listeners: AnimationStateListener2[]; + queue: EventQueue; + propertyIDs: IntSet; + mixingTo: TrackEntry[]; + animationsChanged: boolean; + timeScale: number; + trackEntryPool: Pool; + constructor(data: AnimationStateData); + update(delta: number): void; + updateMixingFrom(to: TrackEntry, delta: number): boolean; + apply(skeleton: Skeleton): boolean; + applyMixingFrom(to: TrackEntry, skeleton: Skeleton, currentPose: MixPose): number; + applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, pose: MixPose, timelinesRotation: Array, i: number, firstFrame: boolean): void; + queueEvents(entry: TrackEntry, animationTime: number): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + setEmptyAnimation(trackIndex: number, mixDuration: number): TrackEntry; + addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): TrackEntry; + setEmptyAnimations(mixDuration: number): void; + expandToIndex(index: number): TrackEntry; + trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; + disposeNext(entry: TrackEntry): void; + _animationsChanged(): void; + getCurrent(trackIndex: number): TrackEntry; + addListener(listener: AnimationStateListener2): void; + removeListener(listener: AnimationStateListener2): void; + clearListeners(): void; + clearListenerNotifications(): void; + } + class TrackEntry { + animation: Animation; + next: TrackEntry; + mixingFrom: TrackEntry; + listener: AnimationStateListener2; + trackIndex: number; + loop: boolean; + eventThreshold: number; + attachmentThreshold: number; + drawOrderThreshold: number; + animationStart: number; + animationEnd: number; + animationLast: number; + nextAnimationLast: number; + delay: number; + trackTime: number; + trackLast: number; + nextTrackLast: number; + trackEnd: number; + timeScale: number; + alpha: number; + mixTime: number; + mixDuration: number; + interruptAlpha: number; + totalAlpha: number; + timelineData: number[]; + timelineDipMix: TrackEntry[]; + timelinesRotation: number[]; + reset(): void; + setTimelineData(to: TrackEntry, mixingToArray: Array, propertyIDs: IntSet): TrackEntry; + hasTimeline(id: number): boolean; + getAnimationTime(): number; + setAnimationLast(animationLast: number): void; + isComplete(): boolean; + resetRotationDirections(): void; + } + class EventQueue { + objects: Array; + drainDisabled: boolean; + animState: AnimationState; + constructor(animState: AnimationState); + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + drain(): void; + clear(): void; + } + enum EventType { + start = 0, + interrupt = 1, + end = 2, + dispose = 3, + complete = 4, + event = 5, + } + interface AnimationStateListener2 { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } + abstract class AnimationStateAdapter2 implements AnimationStateListener2 { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } } declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } } declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private assets; - private errors; - private toLoad; - private loaded; - constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string); - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; - loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; - loadTextureData(path: string, data: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; - get(path: string): any; - remove(path: string): void; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } + class AssetManager implements Disposable { + private pathPrefix; + private textureLoader; + private assets; + private errors; + private toLoad; + private loaded; + constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string); + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + loadTextureData(path: string, data: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + get(path: string): any; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + getToLoad(): number; + getLoaded(): number; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map; + } } declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } + class AtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } } declare module spine { - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3, - } + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3, + } } declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - appliedValid: boolean; - a: number; - b: number; - worldX: number; - c: number; - d: number; - worldY: number; - sorted: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + ax: number; + ay: number; + arotation: number; + ascaleX: number; + ascaleY: number; + ashearX: number; + ashearY: number; + appliedValid: boolean; + a: number; + b: number; + worldX: number; + c: number; + d: number; + worldY: number; + sorted: boolean; + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + update(): void; + updateWorldTransform(): void; + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + updateAppliedTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + worldToLocalRotation(worldRotation: number): number; + localToWorldRotation(localRotation: number): number; + rotateWorld(degrees: number): void; + } } declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4, - } + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + transformMode: TransformMode; + constructor(index: number, name: string, parent: BoneData); + } + enum TransformMode { + Normal = 0, + OnlyTranslation = 1, + NoRotationOrReflection = 2, + NoScale = 3, + NoScaleOrReflection = 4, + } } declare module spine { - interface Constraint extends Updatable { - getOrder(): number; - } + interface Constraint extends Updatable { + getOrder(): number; + } } declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - constructor(time: number, data: EventData); - } + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + constructor(time: number, data: EventData); + } } declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - constructor(name: string); - } + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + constructor(name: string); + } } declare module spine { - class IkConstraint implements Constraint { - data: IkConstraintData; - bones: Array; - target: Bone; - mix: number; - bendDirection: number; - constructor(data: IkConstraintData, skeleton: Skeleton); - getOrder(): number; - apply(): void; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; - } + class IkConstraint implements Constraint { + data: IkConstraintData; + bones: Array; + target: Bone; + mix: number; + bendDirection: number; + constructor(data: IkConstraintData, skeleton: Skeleton); + getOrder(): number; + apply(): void; + update(): void; + apply1(bone: Bone, targetX: number, targetY: number, alpha: number): void; + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, alpha: number): void; + } } declare module spine { - class IkConstraintData { - name: string; - order: number; - bones: BoneData[]; - target: BoneData; - bendDirection: number; - mix: number; - constructor(name: string); - } + class IkConstraintData { + name: string; + order: number; + bones: BoneData[]; + target: BoneData; + bendDirection: number; + mix: number; + constructor(name: string); + } } declare module spine { - class PathConstraint implements Constraint { - static NONE: number; - static BEFORE: number; - static AFTER: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - rotateMix: number; - translateMix: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - constructor(data: PathConstraintData, skeleton: Skeleton); - apply(): void; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - getOrder(): number; - } + class PathConstraint implements Constraint { + static NONE: number; + static BEFORE: number; + static AFTER: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + constructor(data: PathConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + getOrder(): number; + } } declare module spine { - class PathConstraintData { - name: string; - order: number; - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - rotateMix: number; - translateMix: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1, - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2, - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2, - } + class PathConstraintData { + name: string; + order: number; + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1, + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2, + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2, + } } interface Math { - fround(n: number): number; + fround(n: number): number; } declare module spine { - class SharedAssetManager implements Disposable { - private pathPrefix; - private clientAssets; - private queuedAssets; - private rawAssets; - private errors; - constructor(pathPrefix?: string); - private queueAsset(clientId, textureLoader, path); - loadText(clientId: string, path: string): void; - loadJson(clientId: string, path: string): void; - loadTexture(clientId: string, textureLoader: (image: HTMLImageElement) => any, path: string): void; - get(clientId: string, path: string): any; - private updateClientAssets(clientAssets); - isLoadingComplete(clientId: string): boolean; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } + class SharedAssetManager implements Disposable { + private pathPrefix; + private clientAssets; + private queuedAssets; + private rawAssets; + private errors; + constructor(pathPrefix?: string); + private queueAsset(clientId, textureLoader, path); + loadText(clientId: string, path: string): void; + loadJson(clientId: string, path: string): void; + loadTexture(clientId: string, textureLoader: (image: HTMLImageElement) => any, path: string): void; + get(clientId: string, path: string): any; + private updateClientAssets(clientAssets); + isLoadingComplete(clientId: string): boolean; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map; + } } declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - updateCacheReset: Updatable[]; - skin: Skin; - color: Color; - time: number; - flipX: boolean; - flipY: boolean; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp: Array): void; - update(delta: number): void; - } + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + updateCacheReset: Updatable[]; + skin: Skin; + color: Color; + time: number; + flipX: boolean; + flipY: boolean; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortIkConstraint(constraint: IkConstraint): void; + sortPathConstraint(constraint: PathConstraint): void; + sortTransformConstraint(constraint: TransformConstraint): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + updateWorldTransform(): void; + setToSetupPose(): void; + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + getRootBone(): Bone; + findBone(boneName: string): Bone; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): Slot; + findSlotIndex(slotName: string): number; + setSkinByName(skinName: string): void; + setSkin(newSkin: Skin): void; + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + getAttachment(slotIndex: number, attachmentName: string): Attachment; + setAttachment(slotName: string, attachmentName: string): void; + findIkConstraint(constraintName: string): IkConstraint; + findTransformConstraint(constraintName: string): TransformConstraint; + findPathConstraint(constraintName: string): PathConstraint; + getBounds(offset: Vector2, size: Vector2, temp: Array): void; + update(delta: number): void; + } } declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + aabbContainsPoint(x: number, y: number): boolean; + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + containsPoint(x: number, y: number): BoundingBoxAttachment; + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + getWidth(): number; + getHeight(): number; + } } declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } + class SkeletonClipping { + private triangulator; + private clippingPolygon; + private clipOutput; + clippedVertices: number[]; + clippedTriangles: number[]; + private scratch; + private clipAttachment; + private clippingPolygons; + clipStart(slot: Slot, clip: ClippingAttachment): number; + clipEndWithSlot(slot: Slot): void; + clipEnd(): void; + isClipping(): boolean; + clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; + clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; + static makeClockwise(polygon: ArrayLike): void; + } } declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - findPathConstraintIndex(pathConstraintName: string): number; - } + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + width: number; + height: number; + version: string; + hash: string; + fps: number; + imagesPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } } declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; - getValue(map: any, prop: string, defaultValue: any): any; - static blendModeFromString(str: string): BlendMode; - static positionModeFromString(str: string): PositionMode; - static spacingModeFromString(str: string): SpacingMode; - static rotateModeFromString(str: string): RotateMode; - static transformModeFromString(str: string): TransformMode; - } + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string | any): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + static transformModeFromString(str: string): TransformMode; + } } declare module spine { - class Skin { - name: string; - attachments: Map[]; - constructor(name: string); - addAttachment(slotIndex: number, name: string, attachment: Attachment): void; - getAttachment(slotIndex: number, name: string): Attachment; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } + class Skin { + name: string; + attachments: Map[]; + constructor(name: string); + addAttachment(slotIndex: number, name: string, attachment: Attachment): void; + getAttachment(slotIndex: number, name: string): Attachment; + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } } declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - private attachment; - private attachmentTime; - attachmentVertices: number[]; - constructor(data: SlotData, bone: Bone); - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } + class Slot { + data: SlotData; + bone: Bone; + color: Color; + darkColor: Color; + private attachment; + private attachmentTime; + attachmentVertices: number[]; + constructor(data: SlotData, bone: Bone); + getAttachment(): Attachment; + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + getAttachmentTime(): number; + setToSetupPose(): void; + } } declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + darkColor: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } } declare module spine { - abstract class Texture { - protected _image: HTMLImageElement; - constructor(image: HTMLImageElement); - getImage(): HTMLImageElement; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - static filterFromString(text: string): TextureFilter; - static wrapFromString(text: string): TextureWrap; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987, - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497, - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - rotate: boolean; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } + abstract class Texture { + protected _image: HTMLImageElement; + constructor(image: HTMLImageElement); + getImage(): HTMLImageElement; + abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + abstract dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest = 9728, + Linear = 9729, + MipMap = 9987, + MipMapNearestNearest = 9984, + MipMapLinearNearest = 9985, + MipMapNearestLinear = 9986, + MipMapLinearLinear = 9987, + } + enum TextureWrap { + MirroredRepeat = 33648, + ClampToEdge = 33071, + Repeat = 10497, + } + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } } declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string, textureLoader: (path: string) => any); - private load(atlasText, textureLoader); - findRegion(name: string): TextureAtlasRegion; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - index: number; - rotate: boolean; - texture: Texture; - } + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => any); + private load(atlasText, textureLoader); + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + texture: Texture; + } } declare module spine { - class TransformConstraint implements Constraint { - data: TransformConstraintData; - bones: Array; - target: Bone; - rotateMix: number; - translateMix: number; - scaleMix: number; - shearMix: number; - temp: Vector2; - constructor(data: TransformConstraintData, skeleton: Skeleton); - apply(): void; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - getOrder(): number; - } + class TransformConstraint implements Constraint { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + constructor(data: TransformConstraintData, skeleton: Skeleton); + apply(): void; + update(): void; + applyAbsoluteWorld(): void; + applyRelativeWorld(): void; + applyAbsoluteLocal(): void; + applyRelativeLocal(): void; + getOrder(): number; + } } declare module spine { - class TransformConstraintData { - name: string; - order: number; - bones: BoneData[]; - target: BoneData; - rotateMix: number; - translateMix: number; - scaleMix: number; - shearMix: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } + class TransformConstraintData { + name: string; + order: number; + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + relative: boolean; + local: boolean; + constructor(name: string); + } } declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave(index, vertexCount, vertices, indices); - private static positiveArea(p1x, p1y, p2x, p2y, p3x, p3y); - private static winding(p1x, p1y, p2x, p2y, p3x, p3y); - } + class Triangulator { + private convexPolygons; + private convexPolygonsIndices; + private indicesArray; + private isConcaveArray; + private triangles; + private polygonPool; + private polygonIndicesPool; + triangulate(verticesArray: ArrayLike): Array; + decompose(verticesArray: Array, triangles: Array): Array>; + private static isConcave(index, vertexCount, vertices, indices); + private static positiveArea(p1x, p1y, p2x, p2y, p3x, p3y); + private static winding(p1x, p1y, p2x, p2y, p3x, p3y); + } } declare module spine { - interface Updatable { - update(): void; - } + interface Updatable { + update(): void; + } } declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } + interface Map { + [key: string]: T; + } + class IntSet { + array: number[]; + add(value: number): boolean; + contains(value: number): boolean; + remove(value: number): void; + clear(): void; + } + interface Disposable { + dispose(): void; + } + interface Restorable { + restore(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + static WHITE: Color; + static RED: Color; + static GREEN: Color; + static BLUE: Color; + static MAGENTA: Color; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): this; + setFromColor(c: Color): this; + setFromString(hex: string): this; + add(r: number, g: number, b: number, a: number): this; + clamp(): this; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + static cbrt(x: number): number; + static randomTriangular(min: number, max: number): number; + static randomTriangularWith(min: number, max: number, mode: number): number; + } + abstract class Interpolation { + protected abstract applyInternal(a: number): number; + apply(start: number, end: number, a: number): number; + } + class Pow extends Interpolation { + protected power: number; + constructor(power: number); + applyInternal(a: number): number; + } + class PowOut extends Pow { + constructor(power: number); + applyInternal(a: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static ensureArrayCapacity(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static newShortArray(size: number): ArrayLike; + static toFloatArray(array: Array): number[] | Float32Array; + static toSinglePrecision(value: number): number; + } + class DebugUtils { + static logBones(skeleton: Skeleton): void; + } + class Pool { + private items; + private instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + length(): number; + normalize(): this; + } + class TimeKeeper { + maxDelta: number; + framesPerSecond: number; + delta: number; + totalTime: number; + private lastTime; + private frameCount; + private frameTime; + update(): void; + } + interface ArrayLike { + length: number; + [n: number]: T; + } + class WindowedMean { + values: Array; + addedValues: number; + lastValue: number; + mean: number; + dirty: boolean; + constructor(windowSize?: number); + hasEnoughData(): boolean; + addValue(value: number): void; + getMean(): number; + } } declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } + interface VertexEffect { + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } } declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - applyDeform(sourceAttachment: VertexAttachment): boolean; - } + abstract class Attachment { + name: string; + constructor(name: string); + } + abstract class VertexAttachment extends Attachment { + private static nextID; + id: number; + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + constructor(name: string); + computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; + applyDeform(sourceAttachment: VertexAttachment): boolean; + } } declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } + interface AttachmentLoader { + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } } declare module spine { - enum AttachmentType { - Region = 0, - BoundingBox = 1, - Mesh = 2, - LinkedMesh = 3, - Path = 4, - Point = 5, - } + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + Point = 5, + } } declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - } + class BoundingBoxAttachment extends VertexAttachment { + color: Color; + constructor(name: string); + } } declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - } + class ClippingAttachment extends VertexAttachment { + endSlot: SlotData; + color: Color; + constructor(name: string); + } } declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - hullLength: number; - private parentMesh; - inheritDeform: boolean; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - applyDeform(sourceAttachment: VertexAttachment): boolean; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - } + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + uvs: ArrayLike; + triangles: Array; + color: Color; + hullLength: number; + private parentMesh; + inheritDeform: boolean; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + applyDeform(sourceAttachment: VertexAttachment): boolean; + getParentMesh(): MeshAttachment; + setParentMesh(parentMesh: MeshAttachment): void; + } } declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - } + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + color: Color; + constructor(name: string); + } } declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - } + class PointAttachment extends VertexAttachment { + x: number; + y: number; + rotation: number; + color: Color; + constructor(name: string); + computeWorldPosition(bone: Bone, point: Vector2): Vector2; + computeWorldRotation(bone: Bone): number; + } } declare module spine { - class RegionAttachment extends Attachment { - static OX1: number; - static OY1: number; - static OX2: number; - static OY2: number; - static OX3: number; - static OY3: number; - static OX4: number; - static OY4: number; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - } + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + uvs: ArrayLike; + tempColor: Color; + constructor(name: string); + updateOffset(): void; + setRegion(region: TextureRegion): void; + computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; + } } declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } + class JitterEffect implements VertexEffect { + jitterX: number; + jitterY: number; + constructor(jitterX: number, jitterY: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } } declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } + class SwirlEffect implements VertexEffect { + static interpolation: PowOut; + centerX: number; + centerY: number; + radius: number; + angle: number; + private worldX; + private worldY; + constructor(radius: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } } declare module spine.webgl { - class AssetManager extends spine.AssetManager { - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string); - } + class AssetManager extends spine.AssetManager { + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string); + } } declare module spine.webgl { - class OrthoCamera { - position: Vector3; - direction: Vector3; - up: Vector3; - near: number; - far: number; - zoom: number; - viewportWidth: number; - viewportHeight: number; - projectionView: Matrix4; - inverseProjectionView: Matrix4; - projection: Matrix4; - view: Matrix4; - private tmp; - constructor(viewportWidth: number, viewportHeight: number); - update(): void; - screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - setViewport(viewportWidth: number, viewportHeight: number): void; - } + class OrthoCamera { + position: Vector3; + direction: Vector3; + up: Vector3; + near: number; + far: number; + zoom: number; + viewportWidth: number; + viewportHeight: number; + projectionView: Matrix4; + inverseProjectionView: Matrix4; + projection: Matrix4; + view: Matrix4; + private tmp; + constructor(viewportWidth: number, viewportHeight: number); + update(): void; + screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; + setViewport(viewportWidth: number, viewportHeight: number): void; + } } declare module spine.webgl { - class GLTexture extends Texture implements Disposable, Restorable { - private context; - private texture; - private boundUnit; - private useMipMaps; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - update(useMipMaps: boolean): void; - restore(): void; - bind(unit?: number): void; - unbind(): void; - dispose(): void; - } + class GLTexture extends Texture implements Disposable, Restorable { + private context; + private texture; + private boundUnit; + private useMipMaps; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement, useMipMaps?: boolean); + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + restore(): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + } } declare module spine.webgl { - class Input { - element: HTMLElement; - lastX: number; - lastY: number; - buttonDown: boolean; - currTouch: Touch; - touchesPool: Pool; - private listeners; - constructor(element: HTMLElement); - private setupCallbacks(element); - addListener(listener: InputListener): void; - removeListener(listener: InputListener): void; - } - class Touch { - identifier: number; - x: number; - y: number; - constructor(identifier: number, x: number, y: number); - } - interface InputListener { - down(x: number, y: number): void; - up(x: number, y: number): void; - moved(x: number, y: number): void; - dragged(x: number, y: number): void; - } + class Input { + element: HTMLElement; + lastX: number; + lastY: number; + buttonDown: boolean; + currTouch: Touch; + touchesPool: Pool; + private listeners; + constructor(element: HTMLElement); + private setupCallbacks(element); + addListener(listener: InputListener): void; + removeListener(listener: InputListener): void; + } + class Touch { + identifier: number; + x: number; + y: number; + constructor(identifier: number, x: number, y: number); + } + interface InputListener { + down(x: number, y: number): void; + up(x: number, y: number): void; + moved(x: number, y: number): void; + dragged(x: number, y: number): void; + } } declare module spine.webgl { - class LoadingScreen { - static FADE_SECONDS: number; - private static loaded; - private static spinnerImg; - private static logoImg; - private renderer; - private logo; - private spinner; - private angle; - private fadeOut; - private timeKeeper; - backgroundColor: Color; - private tempColor; - private firstDraw; - private static SPINNER_DATA; - private static SPINE_LOGO_DATA; - constructor(renderer: SceneRenderer); - draw(complete?: boolean): void; - } + class LoadingScreen { + static FADE_SECONDS: number; + private static loaded; + private static spinnerImg; + private static logoImg; + private renderer; + private logo; + private spinner; + private angle; + private fadeOut; + private timeKeeper; + backgroundColor: Color; + private tempColor; + private firstDraw; + private static SPINNER_DATA; + private static SPINE_LOGO_DATA; + constructor(renderer: SceneRenderer); + draw(complete?: boolean): void; + } } declare module spine.webgl { - const M00 = 0; - const M01 = 4; - const M02 = 8; - const M03 = 12; - const M10 = 1; - const M11 = 5; - const M12 = 9; - const M13 = 13; - const M20 = 2; - const M21 = 6; - const M22 = 10; - const M23 = 14; - const M30 = 3; - const M31 = 7; - const M32 = 11; - const M33 = 15; - class Matrix4 { - temp: Float32Array; - values: Float32Array; - private static xAxis; - private static yAxis; - private static zAxis; - private static tmpMatrix; - constructor(); - set(values: ArrayLike): Matrix4; - transpose(): Matrix4; - identity(): Matrix4; - invert(): Matrix4; - determinant(): number; - translate(x: number, y: number, z: number): Matrix4; - copy(): Matrix4; - projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; - ortho2d(x: number, y: number, width: number, height: number): Matrix4; - ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - multiply(matrix: Matrix4): Matrix4; - multiplyLeft(matrix: Matrix4): Matrix4; - lookAt(position: Vector3, direction: Vector3, up: Vector3): this; - static initTemps(): void; - } + const M00 = 0; + const M01 = 4; + const M02 = 8; + const M03 = 12; + const M10 = 1; + const M11 = 5; + const M12 = 9; + const M13 = 13; + const M20 = 2; + const M21 = 6; + const M22 = 10; + const M23 = 14; + const M30 = 3; + const M31 = 7; + const M32 = 11; + const M33 = 15; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + private static xAxis; + private static yAxis; + private static zAxis; + private static tmpMatrix; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + lookAt(position: Vector3, direction: Vector3, up: Vector3): this; + static initTemps(): void; + } } declare module spine.webgl { - class Mesh implements Disposable, Restorable { - private attributes; - private context; - private vertices; - private verticesBuffer; - private verticesLength; - private dirtyVertices; - private indices; - private indicesBuffer; - private indicesLength; - private dirtyIndices; - private elementsPerVertex; - getAttributes(): VertexAttribute[]; - maxVertices(): number; - numVertices(): number; - setVerticesLength(length: number): void; - getVertices(): Float32Array; - maxIndices(): number; - numIndices(): number; - setIndicesLength(length: number): void; - getIndices(): Uint16Array; - getVertexSizeInFloats(): number; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); - setVertices(vertices: Array): void; - setIndices(indices: Array): void; - draw(shader: Shader, primitiveType: number): void; - drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; - bind(shader: Shader): void; - unbind(shader: Shader): void; - private update(); - restore(): void; - dispose(): void; - } - class VertexAttribute { - name: string; - type: VertexAttributeType; - numElements: number; - constructor(name: string, type: VertexAttributeType, numElements: number); - } - class Position2Attribute extends VertexAttribute { - constructor(); - } - class Position3Attribute extends VertexAttribute { - constructor(); - } - class TexCoordAttribute extends VertexAttribute { - constructor(unit?: number); - } - class ColorAttribute extends VertexAttribute { - constructor(); - } - class Color2Attribute extends VertexAttribute { - constructor(); - } - enum VertexAttributeType { - Float = 0, - } + class Mesh implements Disposable, Restorable { + private attributes; + private context; + private vertices; + private verticesBuffer; + private verticesLength; + private dirtyVertices; + private indices; + private indicesBuffer; + private indicesLength; + private dirtyIndices; + private elementsPerVertex; + getAttributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + getVertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + getIndices(): Uint16Array; + getVertexSizeInFloats(): number; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update(); + restore(): void; + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + class Color2Attribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0, + } } declare module spine.webgl { - class PolygonBatcher implements Disposable { - private context; - private drawCalls; - private isDrawing; - private mesh; - private shader; - private lastTexture; - private verticesLength; - private indicesLength; - private srcBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcBlend: number, dstBlend: number): void; - draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; - private flush(); - end(): void; - getDrawCalls(): number; - dispose(): void; - } + class PolygonBatcher implements Disposable { + private context; + private drawCalls; + private isDrawing; + private mesh; + private shader; + private lastTexture; + private verticesLength; + private indicesLength; + private srcBlend; + private dstBlend; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; + private flush(); + end(): void; + getDrawCalls(): number; + dispose(): void; + } } declare module spine.webgl { - class SceneRenderer implements Disposable { - context: ManagedWebGLRenderingContext; - canvas: HTMLCanvasElement; - camera: OrthoCamera; - batcher: PolygonBatcher; - private twoColorTint; - private batcherShader; - private shapes; - private shapesShader; - private activeRenderer; - private skeletonRenderer; - private skeletonDebugRenderer; - private QUAD; - private QUAD_TRIANGLES; - private WHITE; - constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); - begin(): void; - drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void; - drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; - drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; - drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color, premultipliedAlpha?: boolean): void; - drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): void; - line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - end(): void; - resize(resizeMode: ResizeMode): void; - private enableRenderer(renderer); - dispose(): void; - } - enum ResizeMode { - Stretch = 0, - Expand = 1, - Fit = 2, - } + class SceneRenderer implements Disposable { + context: ManagedWebGLRenderingContext; + canvas: HTMLCanvasElement; + camera: OrthoCamera; + batcher: PolygonBatcher; + private twoColorTint; + private batcherShader; + private shapes; + private shapesShader; + private activeRenderer; + private skeletonRenderer; + private skeletonDebugRenderer; + private QUAD; + private QUAD_TRIANGLES; + private WHITE; + constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); + begin(): void; + drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void; + drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; + drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; + drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color, premultipliedAlpha?: boolean): void; + drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): void; + line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; + triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; + quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; + rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; + rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; + polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; + circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; + curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; + end(): void; + resize(resizeMode: ResizeMode): void; + private enableRenderer(renderer); + dispose(): void; + } + enum ResizeMode { + Stretch = 0, + Expand = 1, + Fit = 2, + } } declare module spine.webgl { - class Shader implements Disposable, Restorable { - private vertexShader; - private fragmentShader; - static MVP_MATRIX: string; - static POSITION: string; - static COLOR: string; - static COLOR2: string; - static TEXCOORDS: string; - static SAMPLER: string; - private context; - private vs; - private fs; - private program; - private tmp2x2; - private tmp3x3; - private tmp4x4; - getProgram(): WebGLProgram; - getVertexShader(): string; - getFragmentShader(): string; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); - private compile(); - private compileShader(type, source); - private compileProgram(vs, fs); - restore(): void; - bind(): void; - unbind(): void; - setUniformi(uniform: string, value: number): void; - setUniformf(uniform: string, value: number): void; - setUniform2f(uniform: string, value: number, value2: number): void; - setUniform3f(uniform: string, value: number, value2: number, value3: number): void; - setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; - setUniform2x2f(uniform: string, value: ArrayLike): void; - setUniform3x3f(uniform: string, value: ArrayLike): void; - setUniform4x4f(uniform: string, value: ArrayLike): void; - getUniformLocation(uniform: string): WebGLUniformLocation; - getAttributeLocation(attribute: string): number; - dispose(): void; - static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - } + class Shader implements Disposable, Restorable { + private vertexShader; + private fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static COLOR2: string; + static TEXCOORDS: string; + static SAMPLER: string; + private context; + private vs; + private fs; + private program; + private tmp2x2; + private tmp3x3; + private tmp4x4; + getProgram(): WebGLProgram; + getVertexShader(): string; + getFragmentShader(): string; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); + private compile(); + private compileShader(type, source); + private compileProgram(vs, fs); + restore(): void; + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + } } declare module spine.webgl { - class ShapeRenderer implements Disposable { - private context; - private isDrawing; - private mesh; - private shapeType; - private color; - private shader; - private vertexIndex; - private tmp; - private srcBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcBlend: number, dstBlend: number): void; - setColor(color: Color): void; - setColorWith(r: number, g: number, b: number, a: number): void; - point(x: number, y: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - x(x: number, y: number, size: number): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - private vertex(x, y, color); - end(): void; - private flush(); - private check(shapeType, numVertices); - dispose(): void; - } - enum ShapeType { - Point = 0, - Line = 1, - Filled = 4, - } + class ShapeRenderer implements Disposable { + private context; + private isDrawing; + private mesh; + private shapeType; + private color; + private shader; + private vertexIndex; + private tmp; + private srcBlend; + private dstBlend; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + setColor(color: Color): void; + setColorWith(r: number, g: number, b: number, a: number): void; + point(x: number, y: number, color?: Color): void; + line(x: number, y: number, x2: number, y2: number, color?: Color): void; + triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; + quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; + rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; + rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; + x(x: number, y: number, size: number): void; + polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; + circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; + curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; + private vertex(x, y, color); + end(): void; + private flush(); + private check(shapeType, numVertices); + dispose(): void; + } + enum ShapeType { + Point = 0, + Line = 1, + Filled = 4, + } } declare module spine.webgl { - class SkeletonDebugRenderer implements Disposable { - boneLineColor: Color; - boneOriginColor: Color; - attachmentLineColor: Color; - triangleLineColor: Color; - pathColor: Color; - clipColor: Color; - aabbColor: Color; - drawBones: boolean; - drawRegionAttachments: boolean; - drawBoundingBoxes: boolean; - drawMeshHull: boolean; - drawMeshTriangles: boolean; - drawPaths: boolean; - drawSkeletonXY: boolean; - drawClipping: boolean; - premultipliedAlpha: boolean; - scale: number; - boneWidth: number; - private context; - private bounds; - private temp; - private vertices; - private static LIGHT_GRAY; - private static GREEN; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); - draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; - dispose(): void; - } + class SkeletonDebugRenderer implements Disposable { + boneLineColor: Color; + boneOriginColor: Color; + attachmentLineColor: Color; + triangleLineColor: Color; + pathColor: Color; + clipColor: Color; + aabbColor: Color; + drawBones: boolean; + drawRegionAttachments: boolean; + drawBoundingBoxes: boolean; + drawMeshHull: boolean; + drawMeshTriangles: boolean; + drawPaths: boolean; + drawSkeletonXY: boolean; + drawClipping: boolean; + premultipliedAlpha: boolean; + scale: number; + boneWidth: number; + private context; + private bounds; + private temp; + private vertices; + private static LIGHT_GRAY; + private static GREEN; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); + draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; + dispose(): void; + } } declare module spine.webgl { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - premultipliedAlpha: boolean; - vertexEffect: VertexEffect; - private tempColor; - private tempColor2; - private vertices; - private vertexSize; - private twoColorTint; - private renderable; - private clipper; - private temp; - private temp2; - private temp3; - private temp4; - constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); - draw(batcher: PolygonBatcher, skeleton: Skeleton): void; - } + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + vertexEffect: VertexEffect; + private tempColor; + private tempColor2; + private vertices; + private vertexSize; + private twoColorTint; + private renderable; + private clipper; + private temp; + private temp2; + private temp3; + private temp4; + constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); + draw(batcher: PolygonBatcher, skeleton: Skeleton): void; + } } declare module spine.webgl { - class Vector3 { - x: number; - y: number; - z: number; - constructor(x?: number, y?: number, z?: number); - setFrom(v: Vector3): Vector3; - set(x: number, y: number, z: number): Vector3; - add(v: Vector3): Vector3; - sub(v: Vector3): Vector3; - scale(s: number): Vector3; - normalize(): Vector3; - cross(v: Vector3): Vector3; - multiply(matrix: Matrix4): Vector3; - project(matrix: Matrix4): Vector3; - dot(v: Vector3): number; - length(): number; - distance(v: Vector3): number; - } + class Vector3 { + x: number; + y: number; + z: number; + constructor(x?: number, y?: number, z?: number); + setFrom(v: Vector3): Vector3; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } } declare module spine.webgl { - class ManagedWebGLRenderingContext { - canvas: HTMLCanvasElement; - gl: WebGLRenderingContext; - private restorables; - constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext, contextConfig?: any); - addRestorable(restorable: Restorable): void; - removeRestorable(restorable: Restorable): void; - } - class WebGLBlendModeConverter { - static ZERO: number; - static ONE: number; - static SRC_COLOR: number; - static ONE_MINUS_SRC_COLOR: number; - static SRC_ALPHA: number; - static ONE_MINUS_SRC_ALPHA: number; - static DST_ALPHA: number; - static ONE_MINUS_DST_ALPHA: number; - static DST_COLOR: number; - static getDestGLBlendMode(blendMode: BlendMode): number; - static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number; - } + class ManagedWebGLRenderingContext { + canvas: HTMLCanvasElement; + gl: WebGLRenderingContext; + private restorables; + constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext, contextConfig?: any); + addRestorable(restorable: Restorable): void; + removeRestorable(restorable: Restorable): void; + } + class WebGLBlendModeConverter { + static ZERO: number; + static ONE: number; + static SRC_COLOR: number; + static ONE_MINUS_SRC_COLOR: number; + static SRC_ALPHA: number; + static ONE_MINUS_SRC_ALPHA: number; + static DST_ALPHA: number; + static ONE_MINUS_DST_ALPHA: number; + static DST_COLOR: number; + static getDestGLBlendMode(blendMode: BlendMode): number; + static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number; + } } diff --git a/spine-ts/build/spine-webgl.js b/spine-ts/build/spine-webgl.js index 75702d47e..4226f314a 100644 --- a/spine-ts/build/spine-webgl.js +++ b/spine-ts/build/spine-webgl.js @@ -1,8950 +1,8950 @@ var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; })(); var spine; (function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (name == null) - throw new Error("name cannot be null."); - if (timelines == null) - throw new Error("timelines cannot be null."); - this.name = name; - this.timelines = timelines; - this.duration = duration; - } - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, pose, direction) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, pose, direction); - }; - Animation.binarySearch = function (values, target, step) { - if (step === void 0) { step = 1; } - var low = 0; - var high = values.length / step - 2; - if (high == 0) - return step; - var current = high >>> 1; - while (true) { - if (values[(current + 1) * step] <= target) - low = current + 1; - else - high = current; - if (low == high) - return (low + 1) * step; - current = (low + high) >>> 1; - } - }; - Animation.linearSearch = function (values, target, step) { - for (var i = 0, last = values.length - step; i <= last; i += step) - if (values[i] > target) - return i; - return -1; - }; - return Animation; - }()); - spine.Animation = Animation; - var MixPose; - (function (MixPose) { - MixPose[MixPose["setup"] = 0] = "setup"; - MixPose[MixPose["current"] = 1] = "current"; - MixPose[MixPose["currentLayered"] = 2] = "currentLayered"; - })(MixPose = spine.MixPose || (spine.MixPose = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["in"] = 0] = "in"; - MixDirection[MixDirection["out"] = 1] = "out"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var TimelineType; - (function (TimelineType) { - TimelineType[TimelineType["rotate"] = 0] = "rotate"; - TimelineType[TimelineType["translate"] = 1] = "translate"; - TimelineType[TimelineType["scale"] = 2] = "scale"; - TimelineType[TimelineType["shear"] = 3] = "shear"; - TimelineType[TimelineType["attachment"] = 4] = "attachment"; - TimelineType[TimelineType["color"] = 5] = "color"; - TimelineType[TimelineType["deform"] = 6] = "deform"; - TimelineType[TimelineType["event"] = 7] = "event"; - TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; - TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; - TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; - TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; - TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; - TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; - TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; - })(TimelineType = spine.TimelineType || (spine.TimelineType = {})); - var CurveTimeline = (function () { - function CurveTimeline(frameCount) { - if (frameCount <= 0) - throw new Error("frameCount must be > 0: " + frameCount); - this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); - } - CurveTimeline.prototype.getFrameCount = function () { - return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; - }; - CurveTimeline.prototype.setLinear = function (frameIndex) { - this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; - }; - CurveTimeline.prototype.setStepped = function (frameIndex) { - this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; - }; - CurveTimeline.prototype.getCurveType = function (frameIndex) { - var index = frameIndex * CurveTimeline.BEZIER_SIZE; - if (index == this.curves.length) - return CurveTimeline.LINEAR; - var type = this.curves[index]; - if (type == CurveTimeline.LINEAR) - return CurveTimeline.LINEAR; - if (type == CurveTimeline.STEPPED) - return CurveTimeline.STEPPED; - return CurveTimeline.BEZIER; - }; - CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { - var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; - var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; - var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; - var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; - var i = frameIndex * CurveTimeline.BEZIER_SIZE; - var curves = this.curves; - curves[i++] = CurveTimeline.BEZIER; - var x = dfx, y = dfy; - for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - x += dfx; - y += dfy; - } - }; - CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { - percent = spine.MathUtils.clamp(percent, 0, 1); - var curves = this.curves; - var i = frameIndex * CurveTimeline.BEZIER_SIZE; - var type = curves[i]; - if (type == CurveTimeline.LINEAR) - return percent; - if (type == CurveTimeline.STEPPED) - return 0; - i++; - var x = 0; - for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { - x = curves[i]; - if (x >= percent) { - var prevX = void 0, prevY = void 0; - if (i == start) { - prevX = 0; - prevY = 0; - } - else { - prevX = curves[i - 2]; - prevY = curves[i - 1]; - } - return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); - } - } - var y = curves[i - 1]; - return y + (1 - y) * (percent - x) / (1 - x); - }; - return CurveTimeline; - }()); - CurveTimeline.LINEAR = 0; - CurveTimeline.STEPPED = 1; - CurveTimeline.BEZIER = 2; - CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; - spine.CurveTimeline = CurveTimeline; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount << 1); - return _this; - } - RotateTimeline.prototype.getPropertyId = function () { - return (TimelineType.rotate << 24) + this.boneIndex; - }; - RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { - frameIndex <<= 1; - this.frames[frameIndex] = time; - this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; - }; - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - bone.rotation = bone.data.rotation; - return; - case MixPose.current: - var r_1 = bone.data.rotation - bone.rotation; - r_1 -= (16384 - ((16384.499999999996 - r_1 / 360) | 0)) * 360; - bone.rotation += r_1 * alpha; - } - return; - } - if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { - if (pose == MixPose.setup) - bone.rotation = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] * alpha; - else { - var r_2 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; - r_2 -= (16384 - ((16384.499999999996 - r_2 / 360) | 0)) * 360; - bone.rotation += r_2 * alpha; - } - return; - } - var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); - var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); - var r = frames[frame + RotateTimeline.ROTATION] - prevRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - r = prevRotation + r * percent; - if (pose == MixPose.setup) { - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - bone.rotation = bone.data.rotation + r * alpha; - } - else { - r = bone.data.rotation + r - bone.rotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - bone.rotation += r * alpha; - } - }; - return RotateTimeline; - }(CurveTimeline)); - RotateTimeline.ENTRIES = 2; - RotateTimeline.PREV_TIME = -2; - RotateTimeline.PREV_ROTATION = -1; - RotateTimeline.ROTATION = 1; - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); - return _this; - } - TranslateTimeline.prototype.getPropertyId = function () { - return (TimelineType.translate << 24) + this.boneIndex; - }; - TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { - frameIndex *= TranslateTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TranslateTimeline.X] = x; - this.frames[frameIndex + TranslateTimeline.Y] = y; - }; - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixPose.current: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { - x = frames[frames.length + TranslateTimeline.PREV_X]; - y = frames[frames.length + TranslateTimeline.PREV_Y]; - } - else { - var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); - x = frames[frame + TranslateTimeline.PREV_X]; - y = frames[frame + TranslateTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); - x += (frames[frame + TranslateTimeline.X] - x) * percent; - y += (frames[frame + TranslateTimeline.Y] - y) * percent; - } - if (pose == MixPose.setup) { - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - } - else { - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - } - }; - return TranslateTimeline; - }(CurveTimeline)); - TranslateTimeline.ENTRIES = 3; - TranslateTimeline.PREV_TIME = -3; - TranslateTimeline.PREV_X = -2; - TranslateTimeline.PREV_Y = -1; - TranslateTimeline.X = 1; - TranslateTimeline.Y = 2; - spine.TranslateTimeline = TranslateTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - ScaleTimeline.prototype.getPropertyId = function () { - return (TimelineType.scale << 24) + this.boneIndex; - }; - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixPose.current: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { - x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX; - y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY; - } - else { - var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); - x = frames[frame + ScaleTimeline.PREV_X]; - y = frames[frame + ScaleTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); - x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX; - y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY; - } - if (alpha == 1) { - bone.scaleX = x; - bone.scaleY = y; - } - else { - var bx = 0, by = 0; - if (pose == MixPose.setup) { - bx = bone.data.scaleX; - by = bone.data.scaleY; - } - else { - bx = bone.scaleX; - by = bone.scaleY; - } - if (direction == MixDirection.out) { - x = Math.abs(x) * spine.MathUtils.signum(bx); - y = Math.abs(y) * spine.MathUtils.signum(by); - } - else { - bx = Math.abs(bx) * spine.MathUtils.signum(x); - by = Math.abs(by) * spine.MathUtils.signum(y); - } - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - } - }; - return ScaleTimeline; - }(TranslateTimeline)); - spine.ScaleTimeline = ScaleTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - ShearTimeline.prototype.getPropertyId = function () { - return (TimelineType.shear << 24) + this.boneIndex; - }; - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixPose.current: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { - x = frames[frames.length + ShearTimeline.PREV_X]; - y = frames[frames.length + ShearTimeline.PREV_Y]; - } - else { - var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); - x = frames[frame + ShearTimeline.PREV_X]; - y = frames[frame + ShearTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); - x = x + (frames[frame + ShearTimeline.X] - x) * percent; - y = y + (frames[frame + ShearTimeline.Y] - y) * percent; - } - if (pose == MixPose.setup) { - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - } - else { - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - } - }; - return ShearTimeline; - }(TranslateTimeline)); - spine.ShearTimeline = ShearTimeline; - var ColorTimeline = (function (_super) { - __extends(ColorTimeline, _super); - function ColorTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); - return _this; - } - ColorTimeline.prototype.getPropertyId = function () { - return (TimelineType.color << 24) + this.slotIndex; - }; - ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { - frameIndex *= ColorTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + ColorTimeline.R] = r; - this.frames[frameIndex + ColorTimeline.G] = g; - this.frames[frameIndex + ColorTimeline.B] = b; - this.frames[frameIndex + ColorTimeline.A] = a; - }; - ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var slot = skeleton.slots[this.slotIndex]; - var frames = this.frames; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - slot.color.setFromColor(slot.data.color); - return; - case MixPose.current: - var color = slot.color, setup = slot.data.color; - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { - var i = frames.length; - r = frames[i + ColorTimeline.PREV_R]; - g = frames[i + ColorTimeline.PREV_G]; - b = frames[i + ColorTimeline.PREV_B]; - a = frames[i + ColorTimeline.PREV_A]; - } - else { - var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); - r = frames[frame + ColorTimeline.PREV_R]; - g = frames[frame + ColorTimeline.PREV_G]; - b = frames[frame + ColorTimeline.PREV_B]; - a = frames[frame + ColorTimeline.PREV_A]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); - r += (frames[frame + ColorTimeline.R] - r) * percent; - g += (frames[frame + ColorTimeline.G] - g) * percent; - b += (frames[frame + ColorTimeline.B] - b) * percent; - a += (frames[frame + ColorTimeline.A] - a) * percent; - } - if (alpha == 1) - slot.color.set(r, g, b, a); - else { - var color = slot.color; - if (pose == MixPose.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - return ColorTimeline; - }(CurveTimeline)); - ColorTimeline.ENTRIES = 5; - ColorTimeline.PREV_TIME = -5; - ColorTimeline.PREV_R = -4; - ColorTimeline.PREV_G = -3; - ColorTimeline.PREV_B = -2; - ColorTimeline.PREV_A = -1; - ColorTimeline.R = 1; - ColorTimeline.G = 2; - ColorTimeline.B = 3; - ColorTimeline.A = 4; - spine.ColorTimeline = ColorTimeline; - var TwoColorTimeline = (function (_super) { - __extends(TwoColorTimeline, _super); - function TwoColorTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES); - return _this; - } - TwoColorTimeline.prototype.getPropertyId = function () { - return (TimelineType.twoColor << 24) + this.slotIndex; - }; - TwoColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a, r2, g2, b2) { - frameIndex *= TwoColorTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TwoColorTimeline.R] = r; - this.frames[frameIndex + TwoColorTimeline.G] = g; - this.frames[frameIndex + TwoColorTimeline.B] = b; - this.frames[frameIndex + TwoColorTimeline.A] = a; - this.frames[frameIndex + TwoColorTimeline.R2] = r2; - this.frames[frameIndex + TwoColorTimeline.G2] = g2; - this.frames[frameIndex + TwoColorTimeline.B2] = b2; - }; - TwoColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var slot = skeleton.slots[this.slotIndex]; - var frames = this.frames; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - slot.color.setFromColor(slot.data.color); - slot.darkColor.setFromColor(slot.data.darkColor); - return; - case MixPose.current: - var light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0); - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { - var i = frames.length; - r = frames[i + TwoColorTimeline.PREV_R]; - g = frames[i + TwoColorTimeline.PREV_G]; - b = frames[i + TwoColorTimeline.PREV_B]; - a = frames[i + TwoColorTimeline.PREV_A]; - r2 = frames[i + TwoColorTimeline.PREV_R2]; - g2 = frames[i + TwoColorTimeline.PREV_G2]; - b2 = frames[i + TwoColorTimeline.PREV_B2]; - } - else { - var frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES); - r = frames[frame + TwoColorTimeline.PREV_R]; - g = frames[frame + TwoColorTimeline.PREV_G]; - b = frames[frame + TwoColorTimeline.PREV_B]; - a = frames[frame + TwoColorTimeline.PREV_A]; - r2 = frames[frame + TwoColorTimeline.PREV_R2]; - g2 = frames[frame + TwoColorTimeline.PREV_G2]; - b2 = frames[frame + TwoColorTimeline.PREV_B2]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime)); - r += (frames[frame + TwoColorTimeline.R] - r) * percent; - g += (frames[frame + TwoColorTimeline.G] - g) * percent; - b += (frames[frame + TwoColorTimeline.B] - b) * percent; - a += (frames[frame + TwoColorTimeline.A] - a) * percent; - r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent; - g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent; - b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent; - } - if (alpha == 1) { - slot.color.set(r, g, b, a); - slot.darkColor.set(r2, g2, b2, 1); - } - else { - var light = slot.color, dark = slot.darkColor; - if (pose == MixPose.setup) { - light.setFromColor(slot.data.color); - dark.setFromColor(slot.data.darkColor); - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0); - } - }; - return TwoColorTimeline; - }(CurveTimeline)); - TwoColorTimeline.ENTRIES = 8; - TwoColorTimeline.PREV_TIME = -8; - TwoColorTimeline.PREV_R = -7; - TwoColorTimeline.PREV_G = -6; - TwoColorTimeline.PREV_B = -5; - TwoColorTimeline.PREV_A = -4; - TwoColorTimeline.PREV_R2 = -3; - TwoColorTimeline.PREV_G2 = -2; - TwoColorTimeline.PREV_B2 = -1; - TwoColorTimeline.R = 1; - TwoColorTimeline.G = 2; - TwoColorTimeline.B = 3; - TwoColorTimeline.A = 4; - TwoColorTimeline.R2 = 5; - TwoColorTimeline.G2 = 6; - TwoColorTimeline.B2 = 7; - spine.TwoColorTimeline = TwoColorTimeline; - var AttachmentTimeline = (function () { - function AttachmentTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.attachmentNames = new Array(frameCount); - } - AttachmentTimeline.prototype.getPropertyId = function () { - return (TimelineType.attachment << 24) + this.slotIndex; - }; - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { - this.frames[frameIndex] = time; - this.attachmentNames[frameIndex] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (direction == MixDirection.out && pose == MixPose.setup) { - var attachmentName_1 = slot.data.attachmentName; - slot.setAttachment(attachmentName_1 == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName_1)); - return; - } - var frames = this.frames; - if (time < frames[0]) { - if (pose == MixPose.setup) { - var attachmentName_2 = slot.data.attachmentName; - slot.setAttachment(attachmentName_2 == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName_2)); - } - return; - } - var frameIndex = 0; - if (time >= frames[frames.length - 1]) - frameIndex = frames.length - 1; - else - frameIndex = Animation.binarySearch(frames, time, 1) - 1; - var attachmentName = this.attachmentNames[frameIndex]; - skeleton.slots[this.slotIndex] - .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }()); - spine.AttachmentTimeline = AttachmentTimeline; - var zeros = null; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount); - _this.frameVertices = new Array(frameCount); - if (zeros == null) - zeros = spine.Utils.newFloatArray(64); - return _this; - } - DeformTimeline.prototype.getPropertyId = function () { - return (TimelineType.deform << 27) + +this.attachment.id + this.slotIndex; - }; - DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { - this.frames[frameIndex] = time; - this.frameVertices[frameIndex] = vertices; - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var slot = skeleton.slots[this.slotIndex]; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) - return; - var verticesArray = slot.attachmentVertices; - var frameVertices = this.frameVertices; - var vertexCount = frameVertices[0].length; - var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (pose) { - case MixPose.setup: - var zeroVertices; - if (vertexAttachment.bones == null) { - zeroVertices = vertexAttachment.vertices; - } - else { - zeroVertices = zeros; - if (zeroVertices.length < vertexCount) - zeros = zeroVertices = spine.Utils.newFloatArray(vertexCount); - } - spine.Utils.arrayCopy(zeroVertices, 0, vertices, 0, vertexCount); - return; - case MixPose.current: - if (alpha == 1) - break; - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - vertices[i] += (setupVertices[i] - vertices[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - vertices[i] *= alpha; - } - } - return; - } - if (time >= frames[frames.length - 1]) { - var lastVertices = frameVertices[frames.length - 1]; - if (alpha == 1) { - spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); - } - else if (pose == MixPose.setup) { - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices_1 = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) { - var setup = setupVertices_1[i_1]; - vertices[i_1] = setup + (lastVertices[i_1] - setup) * alpha; - } - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - vertices[i_2] = lastVertices[i_2] * alpha; - } - } - else { - for (var i_3 = 0; i_3 < vertexCount; i_3++) - vertices[i_3] += (lastVertices[i_3] - vertices[i_3]) * alpha; - } - return; - } - var frame = Animation.binarySearch(frames, time); - var prevVertices = frameVertices[frame - 1]; - var nextVertices = frameVertices[frame]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); - if (alpha == 1) { - for (var i_4 = 0; i_4 < vertexCount; i_4++) { - var prev = prevVertices[i_4]; - vertices[i_4] = prev + (nextVertices[i_4] - prev) * percent; - } - } - else if (pose == MixPose.setup) { - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices_2 = vertexAttachment.vertices; - for (var i_5 = 0; i_5 < vertexCount; i_5++) { - var prev = prevVertices[i_5], setup = setupVertices_2[i_5]; - vertices[i_5] = setup + (prev + (nextVertices[i_5] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_6 = 0; i_6 < vertexCount; i_6++) { - var prev = prevVertices[i_6]; - vertices[i_6] = (prev + (nextVertices[i_6] - prev) * percent) * alpha; - } - } - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) { - var prev = prevVertices[i_7]; - vertices[i_7] += (prev + (nextVertices[i_7] - prev) * percent - vertices[i_7]) * alpha; - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function () { - function EventTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.events = new Array(frameCount); - } - EventTimeline.prototype.getPropertyId = function () { - return TimelineType.event << 24; - }; - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frameIndex, event) { - this.frames[frameIndex] = event.time; - this.events[frameIndex] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - if (firedEvents == null) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, pose, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var frame = 0; - if (lastTime < frames[0]) - frame = 0; - else { - frame = Animation.binarySearch(frames, lastTime); - var frameTime = frames[frame]; - while (frame > 0) { - if (frames[frame - 1] != frameTime) - break; - frame--; - } - } - for (; frame < frameCount && time >= frames[frame]; frame++) - firedEvents.push(this.events[frame]); - }; - return EventTimeline; - }()); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function () { - function DrawOrderTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.drawOrders = new Array(frameCount); - } - DrawOrderTimeline.prototype.getPropertyId = function () { - return TimelineType.drawOrder << 24; - }; - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { - this.frames[frameIndex] = time; - this.drawOrders[frameIndex] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - if (direction == MixDirection.out && pose == MixPose.setup) { - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var frames = this.frames; - if (time < frames[0]) { - if (pose == MixPose.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var frame = 0; - if (time >= frames[frames.length - 1]) - frame = frames.length - 1; - else - frame = Animation.binarySearch(frames, time) - 1; - var drawOrderToSetupIndex = this.drawOrders[frame]; - if (drawOrderToSetupIndex == null) - spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); - else { - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - return DrawOrderTimeline; - }()); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); - return _this; - } - IkConstraintTimeline.prototype.getPropertyId = function () { - return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex; - }; - IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { - frameIndex *= IkConstraintTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; - this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var frames = this.frames; - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - constraint.mix = constraint.data.mix; - constraint.bendDirection = constraint.data.bendDirection; - return; - case MixPose.current: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - } - return; - } - if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { - if (pose == MixPose.setup) { - constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha; - constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection - : frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; - } - else { - constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; - if (direction == MixDirection["in"]) - constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; - } - return; - } - var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); - var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); - if (pose == MixPose.setup) { - constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha; - constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection : frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; - } - else { - constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; - if (direction == MixDirection["in"]) - constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; - } - }; - return IkConstraintTimeline; - }(CurveTimeline)); - IkConstraintTimeline.ENTRIES = 3; - IkConstraintTimeline.PREV_TIME = -3; - IkConstraintTimeline.PREV_MIX = -2; - IkConstraintTimeline.PREV_BEND_DIRECTION = -1; - IkConstraintTimeline.MIX = 1; - IkConstraintTimeline.BEND_DIRECTION = 2; - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); - return _this; - } - TransformConstraintTimeline.prototype.getPropertyId = function () { - return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex; - }; - TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { - frameIndex *= TransformConstraintTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; - this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; - this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; - this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var frames = this.frames; - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (time < frames[0]) { - var data = constraint.data; - switch (pose) { - case MixPose.setup: - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - constraint.scaleMix = data.scaleMix; - constraint.shearMix = data.shearMix; - return; - case MixPose.current: - constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha; - constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha; - constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha; - constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha; - } - return; - } - var rotate = 0, translate = 0, scale = 0, shear = 0; - if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { - var i = frames.length; - rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE]; - translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE]; - scale = frames[i + TransformConstraintTimeline.PREV_SCALE]; - shear = frames[i + TransformConstraintTimeline.PREV_SHEAR]; - } - else { - var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); - rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; - translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; - scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; - shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); - rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent; - translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent; - scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent; - shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent; - } - if (pose == MixPose.setup) { - var data = constraint.data; - constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha; - constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha; - constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha; - constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha; - } - else { - constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; - constraint.translateMix += (translate - constraint.translateMix) * alpha; - constraint.scaleMix += (scale - constraint.scaleMix) * alpha; - constraint.shearMix += (shear - constraint.shearMix) * alpha; - } - }; - return TransformConstraintTimeline; - }(CurveTimeline)); - TransformConstraintTimeline.ENTRIES = 5; - TransformConstraintTimeline.PREV_TIME = -5; - TransformConstraintTimeline.PREV_ROTATE = -4; - TransformConstraintTimeline.PREV_TRANSLATE = -3; - TransformConstraintTimeline.PREV_SCALE = -2; - TransformConstraintTimeline.PREV_SHEAR = -1; - TransformConstraintTimeline.ROTATE = 1; - TransformConstraintTimeline.TRANSLATE = 2; - TransformConstraintTimeline.SCALE = 3; - TransformConstraintTimeline.SHEAR = 4; - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); - return _this; - } - PathConstraintPositionTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex; - }; - PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { - frameIndex *= PathConstraintPositionTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; - }; - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - constraint.position = constraint.data.position; - return; - case MixPose.current: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = 0; - if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) - position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE]; - else { - var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); - position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); - position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent; - } - if (pose == MixPose.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - return PathConstraintPositionTimeline; - }(CurveTimeline)); - PathConstraintPositionTimeline.ENTRIES = 2; - PathConstraintPositionTimeline.PREV_TIME = -2; - PathConstraintPositionTimeline.PREV_VALUE = -1; - PathConstraintPositionTimeline.VALUE = 1; - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - PathConstraintSpacingTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex; - }; - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixPose.current: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = 0; - if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) - spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE]; - else { - var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); - spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); - spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent; - } - if (pose == MixPose.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(PathConstraintPositionTimeline)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); - return _this; - } - PathConstraintMixTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { - frameIndex *= PathConstraintMixTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; - this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (time < frames[0]) { - switch (pose) { - case MixPose.setup: - constraint.rotateMix = constraint.data.rotateMix; - constraint.translateMix = constraint.data.translateMix; - return; - case MixPose.current: - constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha; - constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha; - } - return; - } - var rotate = 0, translate = 0; - if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { - rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE]; - translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE]; - } - else { - var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); - rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; - translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); - rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent; - translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent; - } - if (pose == MixPose.setup) { - constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha; - constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha; - } - else { - constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; - constraint.translateMix += (translate - constraint.translateMix) * alpha; - } - }; - return PathConstraintMixTimeline; - }(CurveTimeline)); - PathConstraintMixTimeline.ENTRIES = 3; - PathConstraintMixTimeline.PREV_TIME = -3; - PathConstraintMixTimeline.PREV_ROTATE = -2; - PathConstraintMixTimeline.PREV_TRANSLATE = -1; - PathConstraintMixTimeline.ROTATE = 1; - PathConstraintMixTimeline.TRANSLATE = 2; - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; + var Animation = (function () { + function Animation(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.duration = duration; + } + Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, pose, direction) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + var timelines = this.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha, pose, direction); + }; + Animation.binarySearch = function (values, target, step) { + if (step === void 0) { step = 1; } + var low = 0; + var high = values.length / step - 2; + if (high == 0) + return step; + var current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + }; + Animation.linearSearch = function (values, target, step) { + for (var i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + }; + return Animation; + }()); + spine.Animation = Animation; + var MixPose; + (function (MixPose) { + MixPose[MixPose["setup"] = 0] = "setup"; + MixPose[MixPose["current"] = 1] = "current"; + MixPose[MixPose["currentLayered"] = 2] = "currentLayered"; + })(MixPose = spine.MixPose || (spine.MixPose = {})); + var MixDirection; + (function (MixDirection) { + MixDirection[MixDirection["in"] = 0] = "in"; + MixDirection[MixDirection["out"] = 1] = "out"; + })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); + var TimelineType; + (function (TimelineType) { + TimelineType[TimelineType["rotate"] = 0] = "rotate"; + TimelineType[TimelineType["translate"] = 1] = "translate"; + TimelineType[TimelineType["scale"] = 2] = "scale"; + TimelineType[TimelineType["shear"] = 3] = "shear"; + TimelineType[TimelineType["attachment"] = 4] = "attachment"; + TimelineType[TimelineType["color"] = 5] = "color"; + TimelineType[TimelineType["deform"] = 6] = "deform"; + TimelineType[TimelineType["event"] = 7] = "event"; + TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; + TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; + TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; + TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; + TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; + TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; + TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; + })(TimelineType = spine.TimelineType || (spine.TimelineType = {})); + var CurveTimeline = (function () { + function CurveTimeline(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + CurveTimeline.prototype.getFrameCount = function () { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + }; + CurveTimeline.prototype.setLinear = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + }; + CurveTimeline.prototype.setStepped = function (frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + }; + CurveTimeline.prototype.getCurveType = function (frameIndex) { + var index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + var type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + }; + CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { + var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + var x = dfx, y = dfy; + for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + }; + CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + var curves = this.curves; + var i = frameIndex * CurveTimeline.BEZIER_SIZE; + var type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + var x = 0; + for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + var prevX = void 0, prevY = void 0; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + var y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); + }; + return CurveTimeline; + }()); + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + spine.CurveTimeline = CurveTimeline; + var RotateTimeline = (function (_super) { + __extends(RotateTimeline, _super); + function RotateTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount << 1); + return _this; + } + RotateTimeline.prototype.getPropertyId = function () { + return (TimelineType.rotate << 24) + this.boneIndex; + }; + RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + }; + RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + bone.rotation = bone.data.rotation; + return; + case MixPose.current: + var r_1 = bone.data.rotation - bone.rotation; + r_1 -= (16384 - ((16384.499999999996 - r_1 / 360) | 0)) * 360; + bone.rotation += r_1 * alpha; + } + return; + } + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + if (pose == MixPose.setup) + bone.rotation = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] * alpha; + else { + var r_2 = bone.data.rotation + frames[frames.length + RotateTimeline.PREV_ROTATION] - bone.rotation; + r_2 -= (16384 - ((16384.499999999996 - r_2 / 360) | 0)) * 360; + bone.rotation += r_2 * alpha; + } + return; + } + var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + var r = frames[frame + RotateTimeline.ROTATION] - prevRotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + r = prevRotation + r * percent; + if (pose == MixPose.setup) { + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + bone.rotation = bone.data.rotation + r * alpha; + } + else { + r = bone.data.rotation + r - bone.rotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + bone.rotation += r * alpha; + } + }; + return RotateTimeline; + }(CurveTimeline)); + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + spine.RotateTimeline = RotateTimeline; + var TranslateTimeline = (function (_super) { + __extends(TranslateTimeline, _super); + function TranslateTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + return _this; + } + TranslateTimeline.prototype.getPropertyId = function () { + return (TimelineType.translate << 24) + this.boneIndex; + }; + TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + }; + TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + bone.x = bone.data.x; + bone.y = bone.data.y; + return; + case MixPose.current: + bone.x += (bone.data.x - bone.x) * alpha; + bone.y += (bone.data.y - bone.y) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + x = frames[frames.length + TranslateTimeline.PREV_X]; + y = frames[frames.length + TranslateTimeline.PREV_Y]; + } + else { + var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + x = frames[frame + TranslateTimeline.PREV_X]; + y = frames[frame + TranslateTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + x += (frames[frame + TranslateTimeline.X] - x) * percent; + y += (frames[frame + TranslateTimeline.Y] - y) * percent; + } + if (pose == MixPose.setup) { + bone.x = bone.data.x + x * alpha; + bone.y = bone.data.y + y * alpha; + } + else { + bone.x += (bone.data.x + x - bone.x) * alpha; + bone.y += (bone.data.y + y - bone.y) * alpha; + } + }; + return TranslateTimeline; + }(CurveTimeline)); + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + spine.TranslateTimeline = TranslateTimeline; + var ScaleTimeline = (function (_super) { + __extends(ScaleTimeline, _super); + function ScaleTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + ScaleTimeline.prototype.getPropertyId = function () { + return (TimelineType.scale << 24) + this.boneIndex; + }; + ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + bone.scaleX = bone.data.scaleX; + bone.scaleY = bone.data.scaleY; + return; + case MixPose.current: + bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX; + y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY; + } + else { + var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + x = frames[frame + ScaleTimeline.PREV_X]; + y = frames[frame + ScaleTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX; + y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY; + } + if (alpha == 1) { + bone.scaleX = x; + bone.scaleY = y; + } + else { + var bx = 0, by = 0; + if (pose == MixPose.setup) { + bx = bone.data.scaleX; + by = bone.data.scaleY; + } + else { + bx = bone.scaleX; + by = bone.scaleY; + } + if (direction == MixDirection.out) { + x = Math.abs(x) * spine.MathUtils.signum(bx); + y = Math.abs(y) * spine.MathUtils.signum(by); + } + else { + bx = Math.abs(bx) * spine.MathUtils.signum(x); + by = Math.abs(by) * spine.MathUtils.signum(y); + } + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + } + }; + return ScaleTimeline; + }(TranslateTimeline)); + spine.ScaleTimeline = ScaleTimeline; + var ShearTimeline = (function (_super) { + __extends(ShearTimeline, _super); + function ShearTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + ShearTimeline.prototype.getPropertyId = function () { + return (TimelineType.shear << 24) + this.boneIndex; + }; + ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var frames = this.frames; + var bone = skeleton.bones[this.boneIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + bone.shearX = bone.data.shearX; + bone.shearY = bone.data.shearY; + return; + case MixPose.current: + bone.shearX += (bone.data.shearX - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY - bone.shearY) * alpha; + } + return; + } + var x = 0, y = 0; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + x = frames[frames.length + ShearTimeline.PREV_X]; + y = frames[frames.length + ShearTimeline.PREV_Y]; + } + else { + var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + x = frames[frame + ShearTimeline.PREV_X]; + y = frames[frame + ShearTimeline.PREV_Y]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + x = x + (frames[frame + ShearTimeline.X] - x) * percent; + y = y + (frames[frame + ShearTimeline.Y] - y) * percent; + } + if (pose == MixPose.setup) { + bone.shearX = bone.data.shearX + x * alpha; + bone.shearY = bone.data.shearY + y * alpha; + } + else { + bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; + } + }; + return ShearTimeline; + }(TranslateTimeline)); + spine.ShearTimeline = ShearTimeline; + var ColorTimeline = (function (_super) { + __extends(ColorTimeline, _super); + function ColorTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + return _this; + } + ColorTimeline.prototype.getPropertyId = function () { + return (TimelineType.color << 24) + this.slotIndex; + }; + ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + }; + ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var slot = skeleton.slots[this.slotIndex]; + var frames = this.frames; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + slot.color.setFromColor(slot.data.color); + return; + case MixPose.current: + var color = slot.color, setup = slot.data.color; + color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); + } + return; + } + var r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + if (alpha == 1) + slot.color.set(r, g, b, a); + else { + var color = slot.color; + if (pose == MixPose.setup) + color.setFromColor(slot.data.color); + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + } + }; + return ColorTimeline; + }(CurveTimeline)); + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + spine.ColorTimeline = ColorTimeline; + var TwoColorTimeline = (function (_super) { + __extends(TwoColorTimeline, _super); + function TwoColorTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES); + return _this; + } + TwoColorTimeline.prototype.getPropertyId = function () { + return (TimelineType.twoColor << 24) + this.slotIndex; + }; + TwoColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a, r2, g2, b2) { + frameIndex *= TwoColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TwoColorTimeline.R] = r; + this.frames[frameIndex + TwoColorTimeline.G] = g; + this.frames[frameIndex + TwoColorTimeline.B] = b; + this.frames[frameIndex + TwoColorTimeline.A] = a; + this.frames[frameIndex + TwoColorTimeline.R2] = r2; + this.frames[frameIndex + TwoColorTimeline.G2] = g2; + this.frames[frameIndex + TwoColorTimeline.B2] = b2; + }; + TwoColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var slot = skeleton.slots[this.slotIndex]; + var frames = this.frames; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + slot.color.setFromColor(slot.data.color); + slot.darkColor.setFromColor(slot.data.darkColor); + return; + case MixPose.current: + var light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor; + light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); + dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0); + } + return; + } + var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; + if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { + var i = frames.length; + r = frames[i + TwoColorTimeline.PREV_R]; + g = frames[i + TwoColorTimeline.PREV_G]; + b = frames[i + TwoColorTimeline.PREV_B]; + a = frames[i + TwoColorTimeline.PREV_A]; + r2 = frames[i + TwoColorTimeline.PREV_R2]; + g2 = frames[i + TwoColorTimeline.PREV_G2]; + b2 = frames[i + TwoColorTimeline.PREV_B2]; + } + else { + var frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES); + r = frames[frame + TwoColorTimeline.PREV_R]; + g = frames[frame + TwoColorTimeline.PREV_G]; + b = frames[frame + TwoColorTimeline.PREV_B]; + a = frames[frame + TwoColorTimeline.PREV_A]; + r2 = frames[frame + TwoColorTimeline.PREV_R2]; + g2 = frames[frame + TwoColorTimeline.PREV_G2]; + b2 = frames[frame + TwoColorTimeline.PREV_B2]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + TwoColorTimeline.R] - r) * percent; + g += (frames[frame + TwoColorTimeline.G] - g) * percent; + b += (frames[frame + TwoColorTimeline.B] - b) * percent; + a += (frames[frame + TwoColorTimeline.A] - a) * percent; + r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent; + g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent; + b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent; + } + if (alpha == 1) { + slot.color.set(r, g, b, a); + slot.darkColor.set(r2, g2, b2, 1); + } + else { + var light = slot.color, dark = slot.darkColor; + if (pose == MixPose.setup) { + light.setFromColor(slot.data.color); + dark.setFromColor(slot.data.darkColor); + } + light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); + dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0); + } + }; + return TwoColorTimeline; + }(CurveTimeline)); + TwoColorTimeline.ENTRIES = 8; + TwoColorTimeline.PREV_TIME = -8; + TwoColorTimeline.PREV_R = -7; + TwoColorTimeline.PREV_G = -6; + TwoColorTimeline.PREV_B = -5; + TwoColorTimeline.PREV_A = -4; + TwoColorTimeline.PREV_R2 = -3; + TwoColorTimeline.PREV_G2 = -2; + TwoColorTimeline.PREV_B2 = -1; + TwoColorTimeline.R = 1; + TwoColorTimeline.G = 2; + TwoColorTimeline.B = 3; + TwoColorTimeline.A = 4; + TwoColorTimeline.R2 = 5; + TwoColorTimeline.G2 = 6; + TwoColorTimeline.B2 = 7; + spine.TwoColorTimeline = TwoColorTimeline; + var AttachmentTimeline = (function () { + function AttachmentTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + AttachmentTimeline.prototype.getPropertyId = function () { + return (TimelineType.attachment << 24) + this.slotIndex; + }; + AttachmentTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + }; + AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, pose, direction) { + var slot = skeleton.slots[this.slotIndex]; + if (direction == MixDirection.out && pose == MixPose.setup) { + var attachmentName_1 = slot.data.attachmentName; + slot.setAttachment(attachmentName_1 == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName_1)); + return; + } + var frames = this.frames; + if (time < frames[0]) { + if (pose == MixPose.setup) { + var attachmentName_2 = slot.data.attachmentName; + slot.setAttachment(attachmentName_2 == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName_2)); + } + return; + } + var frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + var attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + }; + return AttachmentTimeline; + }()); + spine.AttachmentTimeline = AttachmentTimeline; + var zeros = null; + var DeformTimeline = (function (_super) { + __extends(DeformTimeline, _super); + function DeformTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount); + _this.frameVertices = new Array(frameCount); + if (zeros == null) + zeros = spine.Utils.newFloatArray(64); + return _this; + } + DeformTimeline.prototype.getPropertyId = function () { + return (TimelineType.deform << 27) + +this.attachment.id + this.slotIndex; + }; + DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + }; + DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var slot = skeleton.slots[this.slotIndex]; + var slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !slotAttachment.applyDeform(this.attachment)) + return; + var verticesArray = slot.attachmentVertices; + var frameVertices = this.frameVertices; + var vertexCount = frameVertices[0].length; + var vertices = spine.Utils.setArraySize(verticesArray, vertexCount); + var frames = this.frames; + if (time < frames[0]) { + var vertexAttachment = slotAttachment; + switch (pose) { + case MixPose.setup: + var zeroVertices; + if (vertexAttachment.bones == null) { + zeroVertices = vertexAttachment.vertices; + } + else { + zeroVertices = zeros; + if (zeroVertices.length < vertexCount) + zeros = zeroVertices = spine.Utils.newFloatArray(vertexCount); + } + spine.Utils.arrayCopy(zeroVertices, 0, vertices, 0, vertexCount); + return; + case MixPose.current: + if (alpha == 1) + break; + if (vertexAttachment.bones == null) { + var setupVertices = vertexAttachment.vertices; + for (var i = 0; i < vertexCount; i++) + vertices[i] += (setupVertices[i] - vertices[i]) * alpha; + } + else { + alpha = 1 - alpha; + for (var i = 0; i < vertexCount; i++) + vertices[i] *= alpha; + } + } + return; + } + if (time >= frames[frames.length - 1]) { + var lastVertices = frameVertices[frames.length - 1]; + if (alpha == 1) { + spine.Utils.arrayCopy(lastVertices, 0, vertices, 0, vertexCount); + } + else if (pose == MixPose.setup) { + var vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + var setupVertices_1 = vertexAttachment.vertices; + for (var i_1 = 0; i_1 < vertexCount; i_1++) { + var setup = setupVertices_1[i_1]; + vertices[i_1] = setup + (lastVertices[i_1] - setup) * alpha; + } + } + else { + for (var i_2 = 0; i_2 < vertexCount; i_2++) + vertices[i_2] = lastVertices[i_2] * alpha; + } + } + else { + for (var i_3 = 0; i_3 < vertexCount; i_3++) + vertices[i_3] += (lastVertices[i_3] - vertices[i_3]) * alpha; + } + return; + } + var frame = Animation.binarySearch(frames, time); + var prevVertices = frameVertices[frame - 1]; + var nextVertices = frameVertices[frame]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha == 1) { + for (var i_4 = 0; i_4 < vertexCount; i_4++) { + var prev = prevVertices[i_4]; + vertices[i_4] = prev + (nextVertices[i_4] - prev) * percent; + } + } + else if (pose == MixPose.setup) { + var vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + var setupVertices_2 = vertexAttachment.vertices; + for (var i_5 = 0; i_5 < vertexCount; i_5++) { + var prev = prevVertices[i_5], setup = setupVertices_2[i_5]; + vertices[i_5] = setup + (prev + (nextVertices[i_5] - prev) * percent - setup) * alpha; + } + } + else { + for (var i_6 = 0; i_6 < vertexCount; i_6++) { + var prev = prevVertices[i_6]; + vertices[i_6] = (prev + (nextVertices[i_6] - prev) * percent) * alpha; + } + } + } + else { + for (var i_7 = 0; i_7 < vertexCount; i_7++) { + var prev = prevVertices[i_7]; + vertices[i_7] += (prev + (nextVertices[i_7] - prev) * percent - vertices[i_7]) * alpha; + } + } + }; + return DeformTimeline; + }(CurveTimeline)); + spine.DeformTimeline = DeformTimeline; + var EventTimeline = (function () { + function EventTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + EventTimeline.prototype.getPropertyId = function () { + return TimelineType.event << 24; + }; + EventTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + EventTimeline.prototype.setFrame = function (frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + }; + EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + if (firedEvents == null) + return; + var frames = this.frames; + var frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, pose, direction); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; + var frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + var frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + }; + return EventTimeline; + }()); + spine.EventTimeline = EventTimeline; + var DrawOrderTimeline = (function () { + function DrawOrderTimeline(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + DrawOrderTimeline.prototype.getPropertyId = function () { + return TimelineType.drawOrder << 24; + }; + DrawOrderTimeline.prototype.getFrameCount = function () { + return this.frames.length; + }; + DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + }; + DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var drawOrder = skeleton.drawOrder; + var slots = skeleton.slots; + if (direction == MixDirection.out && pose == MixPose.setup) { + spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + var frames = this.frames; + if (time < frames[0]) { + if (pose == MixPose.setup) + spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + var frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + var drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + }; + return DrawOrderTimeline; + }()); + spine.DrawOrderTimeline = DrawOrderTimeline; + var IkConstraintTimeline = (function (_super) { + __extends(IkConstraintTimeline, _super); + function IkConstraintTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + return _this; + } + IkConstraintTimeline.prototype.getPropertyId = function () { + return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex; + }; + IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, bendDirection) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + }; + IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var frames = this.frames; + var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + constraint.mix = constraint.data.mix; + constraint.bendDirection = constraint.data.bendDirection; + return; + case MixPose.current: + constraint.mix += (constraint.data.mix - constraint.mix) * alpha; + constraint.bendDirection = constraint.data.bendDirection; + } + return; + } + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + if (pose == MixPose.setup) { + constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha; + constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection + : frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + } + else { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + if (direction == MixDirection["in"]) + constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + } + return; + } + var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + if (pose == MixPose.setup) { + constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha; + constraint.bendDirection = direction == MixDirection.out ? constraint.data.bendDirection : frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + } + else { + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + if (direction == MixDirection["in"]) + constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + } + }; + return IkConstraintTimeline; + }(CurveTimeline)); + IkConstraintTimeline.ENTRIES = 3; + IkConstraintTimeline.PREV_TIME = -3; + IkConstraintTimeline.PREV_MIX = -2; + IkConstraintTimeline.PREV_BEND_DIRECTION = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.BEND_DIRECTION = 2; + spine.IkConstraintTimeline = IkConstraintTimeline; + var TransformConstraintTimeline = (function (_super) { + __extends(TransformConstraintTimeline, _super); + function TransformConstraintTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + return _this; + } + TransformConstraintTimeline.prototype.getPropertyId = function () { + return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex; + }; + TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + }; + TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var frames = this.frames; + var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (time < frames[0]) { + var data = constraint.data; + switch (pose) { + case MixPose.setup: + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + return; + case MixPose.current: + constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha; + constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha; + constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha; + } + return; + } + var rotate = 0, translate = 0, scale = 0, shear = 0; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + var i = frames.length; + rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[i + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[i + TransformConstraintTimeline.PREV_SHEAR]; + } + else { + var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent; + scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent; + shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent; + } + if (pose == MixPose.setup) { + var data = constraint.data; + constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha; + constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha; + constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha; + constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha; + } + else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + constraint.scaleMix += (scale - constraint.scaleMix) * alpha; + constraint.shearMix += (shear - constraint.shearMix) * alpha; + } + }; + return TransformConstraintTimeline; + }(CurveTimeline)); + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + spine.TransformConstraintTimeline = TransformConstraintTimeline; + var PathConstraintPositionTimeline = (function (_super) { + __extends(PathConstraintPositionTimeline, _super); + function PathConstraintPositionTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + return _this; + } + PathConstraintPositionTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex; + }; + PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + }; + PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + constraint.position = constraint.data.position; + return; + case MixPose.current: + constraint.position += (constraint.data.position - constraint.position) * alpha; + } + return; + } + var position = 0; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) + position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE]; + else { + var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent; + } + if (pose == MixPose.setup) + constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; + else + constraint.position += (position - constraint.position) * alpha; + }; + return PathConstraintPositionTimeline; + }(CurveTimeline)); + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + var PathConstraintSpacingTimeline = (function (_super) { + __extends(PathConstraintSpacingTimeline, _super); + function PathConstraintSpacingTimeline(frameCount) { + return _super.call(this, frameCount) || this; + } + PathConstraintSpacingTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex; + }; + PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + constraint.spacing = constraint.data.spacing; + return; + case MixPose.current: + constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; + } + return; + } + var spacing = 0; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) + spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE]; + else { + var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent; + } + if (pose == MixPose.setup) + constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; + else + constraint.spacing += (spacing - constraint.spacing) * alpha; + }; + return PathConstraintSpacingTimeline; + }(PathConstraintPositionTimeline)); + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + var PathConstraintMixTimeline = (function (_super) { + __extends(PathConstraintMixTimeline, _super); + function PathConstraintMixTimeline(frameCount) { + var _this = _super.call(this, frameCount) || this; + _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + return _this; + } + PathConstraintMixTimeline.prototype.getPropertyId = function () { + return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex; + }; + PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + }; + PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, pose, direction) { + var frames = this.frames; + var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (time < frames[0]) { + switch (pose) { + case MixPose.setup: + constraint.rotateMix = constraint.data.rotateMix; + constraint.translateMix = constraint.data.translateMix; + return; + case MixPose.current: + constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha; + } + return; + } + var rotate = 0, translate = 0; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE]; + } + else { + var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + var frameTime = frames[frame]; + var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent; + } + if (pose == MixPose.setup) { + constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha; + constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha; + } + else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + } + }; + return PathConstraintMixTimeline; + }(CurveTimeline)); + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; })(spine || (spine = {})); var spine; (function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.IntSet(); - this.mixingTo = new Array(); - this.animationsChanged = false; - this.timeScale = 1; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (current == null) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next != null) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime = nextTime + delta * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom != null) { - next.mixTime += currentDelta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) { - tracks[i] = null; - this.queue.end(current); - this.disposeNext(current); - continue; - } - if (current.mixingFrom != null && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - while (from != null) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (from == null) - return true; - var finished = this.updateMixingFrom(from, delta); - if (to.mixTime > 0 && (to.mixTime >= to.mixDuration || to.timeScale == 0)) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - from.trackTime += delta * from.timeScale; - to.mixTime += delta * to.timeScale; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (current == null || current.delay > 0) - continue; - applied = true; - var currentPose = i == 0 ? spine.MixPose.current : spine.MixPose.currentLayered; - var mix = current.alpha; - if (current.mixingFrom != null) - mix *= this.applyMixingFrom(current, skeleton, currentPose); - else if (current.trackTime >= current.trackEnd && current.next == null) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(); - var timelineCount = current.animation.timelines.length; - var timelines = current.animation.timelines; - if (mix == 1) { - for (var ii = 0; ii < timelineCount; ii++) - timelines[ii].apply(skeleton, animationLast, animationTime, events, 1, spine.MixPose.setup, spine.MixDirection["in"]); - } - else { - var timelineData = current.timelineData; - var firstFrame = current.timelinesRotation.length == 0; - if (firstFrame) - spine.Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null); - var timelinesRotation = current.timelinesRotation; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline = timelines[ii]; - var pose = timelineData[ii] >= AnimationState.FIRST ? spine.MixPose.setup : currentPose; - if (timeline instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline, skeleton, animationTime, mix, pose, timelinesRotation, ii << 1, firstFrame); - } - else - timeline.apply(skeleton, animationLast, animationTime, events, mix, pose, spine.MixDirection["in"]); - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, currentPose) { - var from = to.mixingFrom; - if (from.mixingFrom != null) - this.applyMixingFrom(from, skeleton, currentPose); - var mix = 0; - if (to.mixDuration == 0) - mix = 1; - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - } - var events = mix < from.eventThreshold ? this.events : null; - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var animationLast = from.animationLast, animationTime = from.getAnimationTime(); - var timelineCount = from.animation.timelines.length; - var timelines = from.animation.timelines; - var timelineData = from.timelineData; - var timelineDipMix = from.timelineDipMix; - var firstFrame = from.timelinesRotation.length == 0; - if (firstFrame) - spine.Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null); - var timelinesRotation = from.timelinesRotation; - var pose; - var alphaDip = from.alpha * to.interruptAlpha, alphaMix = alphaDip * (1 - mix), alpha = 0; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - switch (timelineData[i]) { - case AnimationState.SUBSEQUENT: - if (!attachments && timeline instanceof spine.AttachmentTimeline) - continue; - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - pose = currentPose; - alpha = alphaMix; - break; - case AnimationState.FIRST: - pose = spine.MixPose.setup; - alpha = alphaMix; - break; - case AnimationState.DIP: - pose = spine.MixPose.setup; - alpha = alphaDip; - break; - default: - pose = spine.MixPose.setup; - alpha = alphaDip; - var dipMix = timelineDipMix[i]; - alpha *= Math.max(0, 1 - dipMix.mixTime / dipMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, pose, timelinesRotation, i << 1, firstFrame); - else { - timeline.apply(skeleton, animationLast, animationTime, events, alpha, pose, spine.MixDirection.out); - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, pose, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, pose, spine.MixDirection["in"]); - return; - } - var rotateTimeline = timeline; - var frames = rotateTimeline.frames; - var bone = skeleton.bones[rotateTimeline.boneIndex]; - if (time < frames[0]) { - if (pose == spine.MixPose.setup) - bone.rotation = bone.data.rotation; - return; - } - var r2 = 0; - if (time >= frames[frames.length - spine.RotateTimeline.ENTRIES]) - r2 = bone.data.rotation + frames[frames.length + spine.RotateTimeline.PREV_ROTATION]; - else { - var frame = spine.Animation.binarySearch(frames, time, spine.RotateTimeline.ENTRIES); - var prevRotation = frames[frame + spine.RotateTimeline.PREV_ROTATION]; - var frameTime = frames[frame]; - var percent = rotateTimeline.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + spine.RotateTimeline.PREV_TIME] - frameTime)); - r2 = frames[frame + spine.RotateTimeline.ROTATION] - prevRotation; - r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; - r2 = prevRotation + r2 * percent + bone.data.rotation; - r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; - } - var r1 = pose == spine.MixPose.setup ? bone.data.rotation : bone.rotation; - var total = 0, diff = r2 - r1; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - r1 += total * alpha; - bone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - if (entry.loop ? (trackLastWrapped > entry.trackTime % duration) - : (animationTime >= animationEnd && entry.animationLast < animationEnd)) { - this.queue.complete(entry); - } - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, events[i]); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (current == null) - return; - this.queue.end(current); - this.disposeNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (from == null) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - if (from != null) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - current.mixTime = 0; - if (from.mixingFrom != null && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - var animation = this.data.skeletonData.findAnimation(animationName); - if (animation == null) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (animation == null) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current != null) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.disposeNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.disposeNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - var animation = this.data.skeletonData.findAnimation(animationName); - if (animation == null) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (animation == null) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last != null) { - while (last.next != null) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (last == null) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - if (delay <= 0) { - var duration = last.animationEnd - last.animationStart; - if (duration != 0) - delay += duration * (1 + ((last.trackTime / duration) | 0)) - this.data.getMix(last.animation, animation); - else - delay = 0; - } - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (delay <= 0) - delay -= mixDuration; - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current != null) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index - this.tracks.length + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation); - return entry; - }; - AnimationState.prototype.disposeNext = function (entry) { - var next = entry.next; - while (next != null) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - var propertyIDs = this.propertyIDs; - propertyIDs.clear(); - var mixingTo = this.mixingTo; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var entry = this.tracks[i]; - if (entry != null) - entry.setTimelineData(null, mixingTo, propertyIDs); - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (listener == null) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - return AnimationState; - }()); - AnimationState.emptyAnimation = new spine.Animation("", [], 0); - AnimationState.SUBSEQUENT = 0; - AnimationState.FIRST = 1; - AnimationState.DIP = 2; - AnimationState.DIP_MIX = 3; - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.timelineData = new Array(); - this.timelineDipMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.mixingFrom = null; - this.animation = null; - this.listener = null; - this.timelineData.length = 0; - this.timelineDipMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.setTimelineData = function (to, mixingToArray, propertyIDs) { - if (to != null) - mixingToArray.push(to); - var lastEntry = this.mixingFrom != null ? this.mixingFrom.setTimelineData(this, mixingToArray, propertyIDs) : this; - if (to != null) - mixingToArray.pop(); - var mixingTo = mixingToArray; - var mixingToLast = mixingToArray.length - 1; - var timelines = this.animation.timelines; - var timelinesCount = this.animation.timelines.length; - var timelineData = spine.Utils.setArraySize(this.timelineData, timelinesCount); - this.timelineDipMix.length = 0; - var timelineDipMix = spine.Utils.setArraySize(this.timelineDipMix, timelinesCount); - outer: for (var i = 0; i < timelinesCount; i++) { - var id = timelines[i].getPropertyId(); - if (!propertyIDs.add(id)) - timelineData[i] = AnimationState.SUBSEQUENT; - else if (to == null || !to.hasTimeline(id)) - timelineData[i] = AnimationState.FIRST; - else { - for (var ii = mixingToLast; ii >= 0; ii--) { - var entry = mixingTo[ii]; - if (!entry.hasTimeline(id)) { - if (entry.mixDuration > 0) { - timelineData[i] = AnimationState.DIP_MIX; - timelineDipMix[i] = entry; - continue outer; - } - } - } - timelineData[i] = AnimationState.DIP; - } - } - return lastEntry; - }; - TrackEntry.prototype.hasTimeline = function (id) { - var timelines = this.animation.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - if (timelines[i].getPropertyId() == id) - return true; - return false; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener != null && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener != null && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener != null && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener != null && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener != null && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener != null && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter2 = (function () { - function AnimationStateAdapter2() { - } - AnimationStateAdapter2.prototype.start = function (entry) { - }; - AnimationStateAdapter2.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter2.prototype.end = function (entry) { - }; - AnimationStateAdapter2.prototype.dispose = function (entry) { - }; - AnimationStateAdapter2.prototype.complete = function (entry) { - }; - AnimationStateAdapter2.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter2; - }()); - spine.AnimationStateAdapter2 = AnimationStateAdapter2; + var AnimationState = (function () { + function AnimationState(data) { + this.tracks = new Array(); + this.events = new Array(); + this.listeners = new Array(); + this.queue = new EventQueue(this); + this.propertyIDs = new spine.IntSet(); + this.mixingTo = new Array(); + this.animationsChanged = false; + this.timeScale = 1; + this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); + this.data = data; + } + AnimationState.prototype.update = function (delta) { + delta *= this.timeScale; + var tracks = this.tracks; + for (var i = 0, n = tracks.length; i < n; i++) { + var current = tracks[i]; + if (current == null) + continue; + current.animationLast = current.nextAnimationLast; + current.trackLast = current.nextTrackLast; + var currentDelta = delta * current.timeScale; + if (current.delay > 0) { + current.delay -= currentDelta; + if (current.delay > 0) + continue; + currentDelta = -current.delay; + current.delay = 0; + } + var next = current.next; + if (next != null) { + var nextTime = current.trackLast - next.delay; + if (nextTime >= 0) { + next.delay = 0; + next.trackTime = nextTime + delta * next.timeScale; + current.trackTime += currentDelta; + this.setCurrent(i, next, true); + while (next.mixingFrom != null) { + next.mixTime += currentDelta; + next = next.mixingFrom; + } + continue; + } + } + else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) { + tracks[i] = null; + this.queue.end(current); + this.disposeNext(current); + continue; + } + if (current.mixingFrom != null && this.updateMixingFrom(current, delta)) { + var from = current.mixingFrom; + current.mixingFrom = null; + while (from != null) { + this.queue.end(from); + from = from.mixingFrom; + } + } + current.trackTime += currentDelta; + } + this.queue.drain(); + }; + AnimationState.prototype.updateMixingFrom = function (to, delta) { + var from = to.mixingFrom; + if (from == null) + return true; + var finished = this.updateMixingFrom(from, delta); + if (to.mixTime > 0 && (to.mixTime >= to.mixDuration || to.timeScale == 0)) { + if (from.totalAlpha == 0 || to.mixDuration == 0) { + to.mixingFrom = from.mixingFrom; + to.interruptAlpha = from.interruptAlpha; + this.queue.end(from); + } + return finished; + } + from.animationLast = from.nextAnimationLast; + from.trackLast = from.nextTrackLast; + from.trackTime += delta * from.timeScale; + to.mixTime += delta * to.timeScale; + return false; + }; + AnimationState.prototype.apply = function (skeleton) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (this.animationsChanged) + this._animationsChanged(); + var events = this.events; + var tracks = this.tracks; + var applied = false; + for (var i = 0, n = tracks.length; i < n; i++) { + var current = tracks[i]; + if (current == null || current.delay > 0) + continue; + applied = true; + var currentPose = i == 0 ? spine.MixPose.current : spine.MixPose.currentLayered; + var mix = current.alpha; + if (current.mixingFrom != null) + mix *= this.applyMixingFrom(current, skeleton, currentPose); + else if (current.trackTime >= current.trackEnd && current.next == null) + mix = 0; + var animationLast = current.animationLast, animationTime = current.getAnimationTime(); + var timelineCount = current.animation.timelines.length; + var timelines = current.animation.timelines; + if (mix == 1) { + for (var ii = 0; ii < timelineCount; ii++) + timelines[ii].apply(skeleton, animationLast, animationTime, events, 1, spine.MixPose.setup, spine.MixDirection["in"]); + } + else { + var timelineData = current.timelineData; + var firstFrame = current.timelinesRotation.length == 0; + if (firstFrame) + spine.Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null); + var timelinesRotation = current.timelinesRotation; + for (var ii = 0; ii < timelineCount; ii++) { + var timeline = timelines[ii]; + var pose = timelineData[ii] >= AnimationState.FIRST ? spine.MixPose.setup : currentPose; + if (timeline instanceof spine.RotateTimeline) { + this.applyRotateTimeline(timeline, skeleton, animationTime, mix, pose, timelinesRotation, ii << 1, firstFrame); + } + else + timeline.apply(skeleton, animationLast, animationTime, events, mix, pose, spine.MixDirection["in"]); + } + } + this.queueEvents(current, animationTime); + events.length = 0; + current.nextAnimationLast = animationTime; + current.nextTrackLast = current.trackTime; + } + this.queue.drain(); + return applied; + }; + AnimationState.prototype.applyMixingFrom = function (to, skeleton, currentPose) { + var from = to.mixingFrom; + if (from.mixingFrom != null) + this.applyMixingFrom(from, skeleton, currentPose); + var mix = 0; + if (to.mixDuration == 0) + mix = 1; + else { + mix = to.mixTime / to.mixDuration; + if (mix > 1) + mix = 1; + } + var events = mix < from.eventThreshold ? this.events : null; + var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; + var animationLast = from.animationLast, animationTime = from.getAnimationTime(); + var timelineCount = from.animation.timelines.length; + var timelines = from.animation.timelines; + var timelineData = from.timelineData; + var timelineDipMix = from.timelineDipMix; + var firstFrame = from.timelinesRotation.length == 0; + if (firstFrame) + spine.Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null); + var timelinesRotation = from.timelinesRotation; + var pose; + var alphaDip = from.alpha * to.interruptAlpha, alphaMix = alphaDip * (1 - mix), alpha = 0; + from.totalAlpha = 0; + for (var i = 0; i < timelineCount; i++) { + var timeline = timelines[i]; + switch (timelineData[i]) { + case AnimationState.SUBSEQUENT: + if (!attachments && timeline instanceof spine.AttachmentTimeline) + continue; + if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) + continue; + pose = currentPose; + alpha = alphaMix; + break; + case AnimationState.FIRST: + pose = spine.MixPose.setup; + alpha = alphaMix; + break; + case AnimationState.DIP: + pose = spine.MixPose.setup; + alpha = alphaDip; + break; + default: + pose = spine.MixPose.setup; + alpha = alphaDip; + var dipMix = timelineDipMix[i]; + alpha *= Math.max(0, 1 - dipMix.mixTime / dipMix.mixDuration); + break; + } + from.totalAlpha += alpha; + if (timeline instanceof spine.RotateTimeline) + this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, pose, timelinesRotation, i << 1, firstFrame); + else { + timeline.apply(skeleton, animationLast, animationTime, events, alpha, pose, spine.MixDirection.out); + } + } + if (to.mixDuration > 0) + this.queueEvents(from, animationTime); + this.events.length = 0; + from.nextAnimationLast = animationTime; + from.nextTrackLast = from.trackTime; + return mix; + }; + AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, pose, timelinesRotation, i, firstFrame) { + if (firstFrame) + timelinesRotation[i] = 0; + if (alpha == 1) { + timeline.apply(skeleton, 0, time, null, 1, pose, spine.MixDirection["in"]); + return; + } + var rotateTimeline = timeline; + var frames = rotateTimeline.frames; + var bone = skeleton.bones[rotateTimeline.boneIndex]; + if (time < frames[0]) { + if (pose == spine.MixPose.setup) + bone.rotation = bone.data.rotation; + return; + } + var r2 = 0; + if (time >= frames[frames.length - spine.RotateTimeline.ENTRIES]) + r2 = bone.data.rotation + frames[frames.length + spine.RotateTimeline.PREV_ROTATION]; + else { + var frame = spine.Animation.binarySearch(frames, time, spine.RotateTimeline.ENTRIES); + var prevRotation = frames[frame + spine.RotateTimeline.PREV_ROTATION]; + var frameTime = frames[frame]; + var percent = rotateTimeline.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + spine.RotateTimeline.PREV_TIME] - frameTime)); + r2 = frames[frame + spine.RotateTimeline.ROTATION] - prevRotation; + r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; + r2 = prevRotation + r2 * percent + bone.data.rotation; + r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; + } + var r1 = pose == spine.MixPose.setup ? bone.data.rotation : bone.rotation; + var total = 0, diff = r2 - r1; + if (diff == 0) { + total = timelinesRotation[i]; + } + else { + diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; + var lastTotal = 0, lastDiff = 0; + if (firstFrame) { + lastTotal = 0; + lastDiff = diff; + } + else { + lastTotal = timelinesRotation[i]; + lastDiff = timelinesRotation[i + 1]; + } + var current = diff > 0, dir = lastTotal >= 0; + if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { + if (Math.abs(lastTotal) > 180) + lastTotal += 360 * spine.MathUtils.signum(lastTotal); + dir = current; + } + total = diff + lastTotal - lastTotal % 360; + if (dir != current) + total += 360 * spine.MathUtils.signum(lastTotal); + timelinesRotation[i] = total; + } + timelinesRotation[i + 1] = diff; + r1 += total * alpha; + bone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360; + }; + AnimationState.prototype.queueEvents = function (entry, animationTime) { + var animationStart = entry.animationStart, animationEnd = entry.animationEnd; + var duration = animationEnd - animationStart; + var trackLastWrapped = entry.trackLast % duration; + var events = this.events; + var i = 0, n = events.length; + for (; i < n; i++) { + var event_1 = events[i]; + if (event_1.time < trackLastWrapped) + break; + if (event_1.time > animationEnd) + continue; + this.queue.event(entry, event_1); + } + if (entry.loop ? (trackLastWrapped > entry.trackTime % duration) + : (animationTime >= animationEnd && entry.animationLast < animationEnd)) { + this.queue.complete(entry); + } + for (; i < n; i++) { + var event_2 = events[i]; + if (event_2.time < animationStart) + continue; + this.queue.event(entry, events[i]); + } + }; + AnimationState.prototype.clearTracks = function () { + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + AnimationState.prototype.clearTrack = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return; + var current = this.tracks[trackIndex]; + if (current == null) + return; + this.queue.end(current); + this.disposeNext(current); + var entry = current; + while (true) { + var from = entry.mixingFrom; + if (from == null) + break; + this.queue.end(from); + entry.mixingFrom = null; + entry = from; + } + this.tracks[current.trackIndex] = null; + this.queue.drain(); + }; + AnimationState.prototype.setCurrent = function (index, current, interrupt) { + var from = this.expandToIndex(index); + this.tracks[index] = current; + if (from != null) { + if (interrupt) + this.queue.interrupt(from); + current.mixingFrom = from; + current.mixTime = 0; + if (from.mixingFrom != null && from.mixDuration > 0) + current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); + from.timelinesRotation.length = 0; + } + this.queue.start(current); + }; + AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + }; + AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { + if (animation == null) + throw new Error("animation cannot be null."); + var interrupt = true; + var current = this.expandToIndex(trackIndex); + if (current != null) { + if (current.nextTrackLast == -1) { + this.tracks[trackIndex] = current.mixingFrom; + this.queue.interrupt(current); + this.queue.end(current); + this.disposeNext(current); + current = current.mixingFrom; + interrupt = false; + } + else + this.disposeNext(current); + } + var entry = this.trackEntry(trackIndex, animation, loop, current); + this.setCurrent(trackIndex, entry, interrupt); + this.queue.drain(); + return entry; + }; + AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { + var animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + }; + AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { + if (animation == null) + throw new Error("animation cannot be null."); + var last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + } + var entry = this.trackEntry(trackIndex, animation, loop, last); + if (last == null) { + this.setCurrent(trackIndex, entry, true); + this.queue.drain(); + } + else { + last.next = entry; + if (delay <= 0) { + var duration = last.animationEnd - last.animationStart; + if (duration != 0) + delay += duration * (1 + ((last.trackTime / duration) | 0)) - this.data.getMix(last.animation, animation); + else + delay = 0; + } + } + entry.delay = delay; + return entry; + }; + AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { + var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { + if (delay <= 0) + delay -= mixDuration; + var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + }; + AnimationState.prototype.setEmptyAnimations = function (mixDuration) { + var oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (var i = 0, n = this.tracks.length; i < n; i++) { + var current = this.tracks[i]; + if (current != null) + this.setEmptyAnimation(current.trackIndex, mixDuration); + } + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + }; + AnimationState.prototype.expandToIndex = function (index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.ensureArrayCapacity(this.tracks, index - this.tracks.length + 1, null); + this.tracks.length = index + 1; + return null; + }; + AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { + var entry = this.trackEntryPool.obtain(); + entry.trackIndex = trackIndex; + entry.animation = animation; + entry.loop = loop; + entry.eventThreshold = 0; + entry.attachmentThreshold = 0; + entry.drawOrderThreshold = 0; + entry.animationStart = 0; + entry.animationEnd = animation.duration; + entry.animationLast = -1; + entry.nextAnimationLast = -1; + entry.delay = 0; + entry.trackTime = 0; + entry.trackLast = -1; + entry.nextTrackLast = -1; + entry.trackEnd = Number.MAX_VALUE; + entry.timeScale = 1; + entry.alpha = 1; + entry.interruptAlpha = 1; + entry.mixTime = 0; + entry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation); + return entry; + }; + AnimationState.prototype.disposeNext = function (entry) { + var next = entry.next; + while (next != null) { + this.queue.dispose(next); + next = next.next; + } + entry.next = null; + }; + AnimationState.prototype._animationsChanged = function () { + this.animationsChanged = false; + var propertyIDs = this.propertyIDs; + propertyIDs.clear(); + var mixingTo = this.mixingTo; + for (var i = 0, n = this.tracks.length; i < n; i++) { + var entry = this.tracks[i]; + if (entry != null) + entry.setTimelineData(null, mixingTo, propertyIDs); + } + }; + AnimationState.prototype.getCurrent = function (trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + }; + AnimationState.prototype.addListener = function (listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + }; + AnimationState.prototype.removeListener = function (listener) { + var index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + }; + AnimationState.prototype.clearListeners = function () { + this.listeners.length = 0; + }; + AnimationState.prototype.clearListenerNotifications = function () { + this.queue.clear(); + }; + return AnimationState; + }()); + AnimationState.emptyAnimation = new spine.Animation("", [], 0); + AnimationState.SUBSEQUENT = 0; + AnimationState.FIRST = 1; + AnimationState.DIP = 2; + AnimationState.DIP_MIX = 3; + spine.AnimationState = AnimationState; + var TrackEntry = (function () { + function TrackEntry() { + this.timelineData = new Array(); + this.timelineDipMix = new Array(); + this.timelinesRotation = new Array(); + } + TrackEntry.prototype.reset = function () { + this.next = null; + this.mixingFrom = null; + this.animation = null; + this.listener = null; + this.timelineData.length = 0; + this.timelineDipMix.length = 0; + this.timelinesRotation.length = 0; + }; + TrackEntry.prototype.setTimelineData = function (to, mixingToArray, propertyIDs) { + if (to != null) + mixingToArray.push(to); + var lastEntry = this.mixingFrom != null ? this.mixingFrom.setTimelineData(this, mixingToArray, propertyIDs) : this; + if (to != null) + mixingToArray.pop(); + var mixingTo = mixingToArray; + var mixingToLast = mixingToArray.length - 1; + var timelines = this.animation.timelines; + var timelinesCount = this.animation.timelines.length; + var timelineData = spine.Utils.setArraySize(this.timelineData, timelinesCount); + this.timelineDipMix.length = 0; + var timelineDipMix = spine.Utils.setArraySize(this.timelineDipMix, timelinesCount); + outer: for (var i = 0; i < timelinesCount; i++) { + var id = timelines[i].getPropertyId(); + if (!propertyIDs.add(id)) + timelineData[i] = AnimationState.SUBSEQUENT; + else if (to == null || !to.hasTimeline(id)) + timelineData[i] = AnimationState.FIRST; + else { + for (var ii = mixingToLast; ii >= 0; ii--) { + var entry = mixingTo[ii]; + if (!entry.hasTimeline(id)) { + if (entry.mixDuration > 0) { + timelineData[i] = AnimationState.DIP_MIX; + timelineDipMix[i] = entry; + continue outer; + } + } + } + timelineData[i] = AnimationState.DIP; + } + } + return lastEntry; + }; + TrackEntry.prototype.hasTimeline = function (id) { + var timelines = this.animation.timelines; + for (var i = 0, n = timelines.length; i < n; i++) + if (timelines[i].getPropertyId() == id) + return true; + return false; + }; + TrackEntry.prototype.getAnimationTime = function () { + if (this.loop) { + var duration = this.animationEnd - this.animationStart; + if (duration == 0) + return this.animationStart; + return (this.trackTime % duration) + this.animationStart; + } + return Math.min(this.trackTime + this.animationStart, this.animationEnd); + }; + TrackEntry.prototype.setAnimationLast = function (animationLast) { + this.animationLast = animationLast; + this.nextAnimationLast = animationLast; + }; + TrackEntry.prototype.isComplete = function () { + return this.trackTime >= this.animationEnd - this.animationStart; + }; + TrackEntry.prototype.resetRotationDirections = function () { + this.timelinesRotation.length = 0; + }; + return TrackEntry; + }()); + spine.TrackEntry = TrackEntry; + var EventQueue = (function () { + function EventQueue(animState) { + this.objects = []; + this.drainDisabled = false; + this.animState = animState; + } + EventQueue.prototype.start = function (entry) { + this.objects.push(EventType.start); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.interrupt = function (entry) { + this.objects.push(EventType.interrupt); + this.objects.push(entry); + }; + EventQueue.prototype.end = function (entry) { + this.objects.push(EventType.end); + this.objects.push(entry); + this.animState.animationsChanged = true; + }; + EventQueue.prototype.dispose = function (entry) { + this.objects.push(EventType.dispose); + this.objects.push(entry); + }; + EventQueue.prototype.complete = function (entry) { + this.objects.push(EventType.complete); + this.objects.push(entry); + }; + EventQueue.prototype.event = function (entry, event) { + this.objects.push(EventType.event); + this.objects.push(entry); + this.objects.push(event); + }; + EventQueue.prototype.drain = function () { + if (this.drainDisabled) + return; + this.drainDisabled = true; + var objects = this.objects; + var listeners = this.animState.listeners; + for (var i = 0; i < objects.length; i += 2) { + var type = objects[i]; + var entry = objects[i + 1]; + switch (type) { + case EventType.start: + if (entry.listener != null && entry.listener.start) + entry.listener.start(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].start) + listeners[ii].start(entry); + break; + case EventType.interrupt: + if (entry.listener != null && entry.listener.interrupt) + entry.listener.interrupt(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].interrupt) + listeners[ii].interrupt(entry); + break; + case EventType.end: + if (entry.listener != null && entry.listener.end) + entry.listener.end(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].end) + listeners[ii].end(entry); + case EventType.dispose: + if (entry.listener != null && entry.listener.dispose) + entry.listener.dispose(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].dispose) + listeners[ii].dispose(entry); + this.animState.trackEntryPool.free(entry); + break; + case EventType.complete: + if (entry.listener != null && entry.listener.complete) + entry.listener.complete(entry); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].complete) + listeners[ii].complete(entry); + break; + case EventType.event: + var event_3 = objects[i++ + 2]; + if (entry.listener != null && entry.listener.event) + entry.listener.event(entry, event_3); + for (var ii = 0; ii < listeners.length; ii++) + if (listeners[ii].event) + listeners[ii].event(entry, event_3); + break; + } + } + this.clear(); + this.drainDisabled = false; + }; + EventQueue.prototype.clear = function () { + this.objects.length = 0; + }; + return EventQueue; + }()); + spine.EventQueue = EventQueue; + var EventType; + (function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["interrupt"] = 1] = "interrupt"; + EventType[EventType["end"] = 2] = "end"; + EventType[EventType["dispose"] = 3] = "dispose"; + EventType[EventType["complete"] = 4] = "complete"; + EventType[EventType["event"] = 5] = "event"; + })(EventType = spine.EventType || (spine.EventType = {})); + var AnimationStateAdapter2 = (function () { + function AnimationStateAdapter2() { + } + AnimationStateAdapter2.prototype.start = function (entry) { + }; + AnimationStateAdapter2.prototype.interrupt = function (entry) { + }; + AnimationStateAdapter2.prototype.end = function (entry) { + }; + AnimationStateAdapter2.prototype.dispose = function (entry) { + }; + AnimationStateAdapter2.prototype.complete = function (entry) { + }; + AnimationStateAdapter2.prototype.event = function (entry, event) { + }; + return AnimationStateAdapter2; + }()); + spine.AnimationStateAdapter2 = AnimationStateAdapter2; })(spine || (spine = {})); var spine; (function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (skeletonData == null) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (from == null) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (to == null) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (from == null) - throw new Error("from cannot be null."); - if (to == null) - throw new Error("to cannot be null."); - var key = from.name + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; + var AnimationStateData = (function () { + function AnimationStateData(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + AnimationStateData.prototype.setMix = function (fromName, toName, duration) { + var from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + var to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + }; + AnimationStateData.prototype.setMixWith = function (from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + var key = from.name + to.name; + this.animationToMixTime[key] = duration; + }; + AnimationStateData.prototype.getMix = function (from, to) { + var key = from.name + to.name; + var value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + }; + return AnimationStateData; + }()); + spine.AnimationStateData = AnimationStateData; })(spine || (spine = {})); var spine; (function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - } - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - this.toLoad++; - var request = new XMLHttpRequest(); - request.onreadystatechange = function () { - if (request.readyState == XMLHttpRequest.DONE) { - if (request.status >= 200 && request.status < 300) { - _this.assets[path] = request.responseText; - if (success) - success(path, request.responseText); - } - else { - _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; - if (error) - error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); - } - _this.toLoad--; - _this.loaded++; - } - }; - request.open("GET", path, true); - request.send(); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - this.toLoad++; - var img = new Image(); - img.crossOrigin = "anonymous"; - img.onload = function (ev) { - var texture = _this.textureLoader(img); - _this.assets[path] = texture; - _this.toLoad--; - _this.loaded++; - if (success) - success(path, img); - }; - img.onerror = function (ev) { - _this.errors[path] = "Couldn't load image " + path; - _this.toLoad--; - _this.loaded++; - if (error) - error(path, "Couldn't load image " + path); - }; - img.src = path; - }; - AssetManager.prototype.loadTextureData = function (path, data, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - this.toLoad++; - var img = new Image(); - img.onload = function (ev) { - var texture = _this.textureLoader(img); - _this.assets[path] = texture; - _this.toLoad--; - _this.loaded++; - if (success) - success(path, img); - }; - img.onerror = function (ev) { - _this.errors[path] = "Couldn't load image " + path; - _this.toLoad--; - _this.loaded++; - if (error) - error(path, "Couldn't load image " + path); - }; - img.src = data; - }; - AssetManager.prototype.get = function (path) { - path = this.pathPrefix + path; - return this.assets[path]; - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - this.assets[path] = null; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; + var AssetManager = (function () { + function AssetManager(textureLoader, pathPrefix) { + if (pathPrefix === void 0) { pathPrefix = ""; } + this.assets = {}; + this.errors = {}; + this.toLoad = 0; + this.loaded = 0; + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + } + AssetManager.prototype.loadText = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.pathPrefix + path; + this.toLoad++; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + _this.assets[path] = request.responseText; + if (success) + success(path, request.responseText); + } + else { + _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + if (error) + error(path, "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText); + } + _this.toLoad--; + _this.loaded++; + } + }; + request.open("GET", path, true); + request.send(); + }; + AssetManager.prototype.loadTexture = function (path, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.pathPrefix + path; + this.toLoad++; + var img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = function (ev) { + var texture = _this.textureLoader(img); + _this.assets[path] = texture; + _this.toLoad--; + _this.loaded++; + if (success) + success(path, img); + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + _this.toLoad--; + _this.loaded++; + if (error) + error(path, "Couldn't load image " + path); + }; + img.src = path; + }; + AssetManager.prototype.loadTextureData = function (path, data, success, error) { + var _this = this; + if (success === void 0) { success = null; } + if (error === void 0) { error = null; } + path = this.pathPrefix + path; + this.toLoad++; + var img = new Image(); + img.onload = function (ev) { + var texture = _this.textureLoader(img); + _this.assets[path] = texture; + _this.toLoad--; + _this.loaded++; + if (success) + success(path, img); + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + _this.toLoad--; + _this.loaded++; + if (error) + error(path, "Couldn't load image " + path); + }; + img.src = data; + }; + AssetManager.prototype.get = function (path) { + path = this.pathPrefix + path; + return this.assets[path]; + }; + AssetManager.prototype.remove = function (path) { + path = this.pathPrefix + path; + var asset = this.assets[path]; + if (asset.dispose) + asset.dispose(); + this.assets[path] = null; + }; + AssetManager.prototype.removeAll = function () { + for (var key in this.assets) { + var asset = this.assets[key]; + if (asset.dispose) + asset.dispose(); + } + this.assets = {}; + }; + AssetManager.prototype.isLoadingComplete = function () { + return this.toLoad == 0; + }; + AssetManager.prototype.getToLoad = function () { + return this.toLoad; + }; + AssetManager.prototype.getLoaded = function () { + return this.loaded; + }; + AssetManager.prototype.dispose = function () { + this.removeAll(); + }; + AssetManager.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + AssetManager.prototype.getErrors = function () { + return this.errors; + }; + return AssetManager; + }()); + spine.AssetManager = AssetManager; })(spine || (spine = {})); var spine; (function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (region == null) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (region == null) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; + var AtlasAttachmentLoader = (function () { + function AtlasAttachmentLoader(atlas) { + this.atlas = atlas; + } + AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + region.renderObject = region; + var attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + return attachment; + }; + AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { + var region = this.atlas.findRegion(path); + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + region.renderObject = region; + var attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + }; + AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { + return new spine.BoundingBoxAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { + return new spine.PathAttachment(name); + }; + AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { + return new spine.PointAttachment(name); + }; + AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { + return new spine.ClippingAttachment(name); + }; + return AtlasAttachmentLoader; + }()); + spine.AtlasAttachmentLoader = AtlasAttachmentLoader; })(spine || (spine = {})); var spine; (function (spine) { - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); + var BlendMode; + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); })(spine || (spine = {})); var spine; (function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.appliedValid = false; - this.a = 0; - this.b = 0; - this.worldX = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.sorted = false; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - this.appliedValid = true; - var parent = this.parent; - if (parent == null) { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - var skeleton = this.skeleton; - if (skeleton.flipX) { - x = -x; - la = -la; - lb = -lb; - } - if (skeleton.flipY) { - y = -y; - lc = -lc; - ld = -ld; - } - this.a = la; - this.b = lb; - this.c = lc; - this.d = ld; - this.worldX = x + skeleton.x; - this.worldY = y + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = pa * cos + pb * sin; - var zc = pc * cos + pd * sin; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - if (this.data.transformMode != spine.TransformMode.NoScaleOrReflection ? pa * pd - pb * pc < 0 : this.skeleton.flipX != this.skeleton.flipY) { - zb = -zb; - zd = -zd; - } - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - return; - } - } - if (this.skeleton.flipX) { - this.a = -this.a; - this.b = -this.b; - } - if (this.skeleton.flipY) { - this.c = -this.c; - this.d = -this.d; - } - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - this.appliedValid = true; - var parent = this.parent; - if (parent == null) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var invDet = 1 / (a * d - b * c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = (x * d * invDet - y * b * invDet); - world.y = (y * a * invDet - x * c * invDet); - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - this.appliedValid = false; - }; - return Bone; - }()); - spine.Bone = Bone; + var Bone = (function () { + function Bone(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.ax = 0; + this.ay = 0; + this.arotation = 0; + this.ascaleX = 0; + this.ascaleY = 0; + this.ashearX = 0; + this.ashearY = 0; + this.appliedValid = false; + this.a = 0; + this.b = 0; + this.worldX = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.sorted = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + Bone.prototype.update = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + Bone.prototype.updateWorldTransform = function () { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + }; + Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.ax = x; + this.ay = y; + this.arotation = rotation; + this.ascaleX = scaleX; + this.ascaleY = scaleY; + this.ashearX = shearX; + this.ashearY = shearY; + this.appliedValid = true; + var parent = this.parent; + if (parent == null) { + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + var skeleton = this.skeleton; + if (skeleton.flipX) { + x = -x; + la = -la; + lb = -lb; + } + if (skeleton.flipY) { + y = -y; + lc = -lc; + ld = -ld; + } + this.a = la; + this.b = lb; + this.c = lc; + this.d = ld; + this.worldX = x + skeleton.x; + this.worldY = y + skeleton.y; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + switch (this.data.transformMode) { + case spine.TransformMode.Normal: { + var rotationY = rotation + 90 + shearY; + var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + return; + } + case spine.TransformMode.OnlyTranslation: { + var rotationY = rotation + 90 + shearY; + this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; + this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; + break; + } + case spine.TransformMode.NoRotationOrReflection: { + var s = pa * pa + pc * pc; + var prx = 0; + if (s > 0.0001) { + s = Math.abs(pa * pd - pb * pc) / s; + pb = pc * s; + pd = pa * s; + prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; + } + else { + pa = 0; + pc = 0; + prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; + } + var rx = rotation + shearX - prx; + var ry = rotation + shearY - prx + 90; + var la = spine.MathUtils.cosDeg(rx) * scaleX; + var lb = spine.MathUtils.cosDeg(ry) * scaleY; + var lc = spine.MathUtils.sinDeg(rx) * scaleX; + var ld = spine.MathUtils.sinDeg(ry) * scaleY; + this.a = pa * la - pb * lc; + this.b = pa * lb - pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + break; + } + case spine.TransformMode.NoScale: + case spine.TransformMode.NoScaleOrReflection: { + var cos = spine.MathUtils.cosDeg(rotation); + var sin = spine.MathUtils.sinDeg(rotation); + var za = pa * cos + pb * sin; + var zc = pc * cos + pd * sin; + var s = Math.sqrt(za * za + zc * zc); + if (s > 0.00001) + s = 1 / s; + za *= s; + zc *= s; + s = Math.sqrt(za * za + zc * zc); + var r = Math.PI / 2 + Math.atan2(zc, za); + var zb = Math.cos(r) * s; + var zd = Math.sin(r) * s; + var la = spine.MathUtils.cosDeg(shearX) * scaleX; + var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; + var lc = spine.MathUtils.sinDeg(shearX) * scaleX; + var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; + if (this.data.transformMode != spine.TransformMode.NoScaleOrReflection ? pa * pd - pb * pc < 0 : this.skeleton.flipX != this.skeleton.flipY) { + zb = -zb; + zd = -zd; + } + this.a = za * la + zb * lc; + this.b = za * lb + zb * ld; + this.c = zc * la + zd * lc; + this.d = zc * lb + zd * ld; + return; + } + } + if (this.skeleton.flipX) { + this.a = -this.a; + this.b = -this.b; + } + if (this.skeleton.flipY) { + this.c = -this.c; + this.d = -this.d; + } + }; + Bone.prototype.setToSetupPose = function () { + var data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + }; + Bone.prototype.getWorldRotationX = function () { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldRotationY = function () { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.getWorldScaleX = function () { + return Math.sqrt(this.a * this.a + this.c * this.c); + }; + Bone.prototype.getWorldScaleY = function () { + return Math.sqrt(this.b * this.b + this.d * this.d); + }; + Bone.prototype.updateAppliedTransform = function () { + this.appliedValid = true; + var parent = this.parent; + if (parent == null) { + this.ax = this.worldX; + this.ay = this.worldY; + this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); + this.ashearX = 0; + this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; + return; + } + var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + var pid = 1 / (pa * pd - pb * pc); + var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.ax = (dx * pd * pid - dy * pb * pid); + this.ay = (dy * pa * pid - dx * pc * pid); + var ia = pid * pd; + var id = pid * pa; + var ib = pid * pb; + var ic = pid * pc; + var ra = ia * this.a - ib * this.c; + var rb = ia * this.b - ib * this.d; + var rc = id * this.c - ic * this.a; + var rd = id * this.d - ic * this.b; + this.ashearX = 0; + this.ascaleX = Math.sqrt(ra * ra + rc * rc); + if (this.ascaleX > 0.0001) { + var det = ra * rd - rb * rc; + this.ascaleY = det / this.ascaleX; + this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.ascaleX = 0; + this.ascaleY = Math.sqrt(rb * rb + rd * rd); + this.ashearY = 0; + this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + }; + Bone.prototype.worldToLocal = function (world) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var invDet = 1 / (a * d - b * c); + var x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + }; + Bone.prototype.localToWorld = function (local) { + var x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + }; + Bone.prototype.worldToLocalRotation = function (worldRotation) { + var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); + return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg; + }; + Bone.prototype.localToWorldRotation = function (localRotation) { + var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); + return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; + }; + Bone.prototype.rotateWorld = function (degrees) { + var a = this.a, b = this.b, c = this.c, d = this.d; + var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + this.appliedValid = false; + }; + return Bone; + }()); + spine.Bone = Bone; })(spine || (spine = {})); var spine; (function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - if (index < 0) - throw new Error("index must be >= 0."); - if (name == null) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); + var BoneData = (function () { + function BoneData(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.transformMode = TransformMode.Normal; + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + return BoneData; + }()); + spine.BoneData = BoneData; + var TransformMode; + (function (TransformMode) { + TransformMode[TransformMode["Normal"] = 0] = "Normal"; + TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; + TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; + TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); })(spine || (spine = {})); var spine; (function (spine) { - var Event = (function () { - function Event(time, data) { - if (data == null) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; + var Event = (function () { + function Event(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + return Event; + }()); + spine.Event = Event; })(spine || (spine = {})); var spine; (function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; + var EventData = (function () { + function EventData(name) { + this.name = name; + } + return EventData; + }()); + spine.EventData = EventData; })(spine || (spine = {})); var spine; (function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.mix = 1; - this.bendDirection = 0; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.bendDirection = data.bendDirection; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.getOrder = function () { - return this.data.order; - }; - IkConstraint.prototype.apply = function () { - this.update(); - }; - IkConstraint.prototype.update = function () { - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var p = bone.parent; - var id = 1 / (p.a * p.d - p.b * p.c); - var x = targetX - p.worldX, y = targetY - p.worldY; - var tx = (x * p.d - y * p.b) * id - bone.ax, ty = (y * p.a - x * p.c) * id - bone.ay; - var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.ashearX - bone.arotation; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, bone.ascaleX, bone.ascaleY, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { - if (alpha == 0) { - child.updateWorldTransform(); - return; - } - if (!parent.appliedValid) - parent.updateAppliedTransform(); - if (!child.appliedValid) - child.updateAppliedTransform(); - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - x = cwx - pp.worldX; - y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; - outer: if (u) { - l2 *= psx; - var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) - cos = -1; - else if (cos > 1) - cos = 1; - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) / 2; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) / 2) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.ascaleX, parent.ascaleY, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; + var IkConstraint = (function () { + function IkConstraint(data, skeleton) { + this.mix = 1; + this.bendDirection = 0; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.bendDirection = data.bendDirection; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + IkConstraint.prototype.getOrder = function () { + return this.data.order; + }; + IkConstraint.prototype.apply = function () { + this.update(); + }; + IkConstraint.prototype.update = function () { + var target = this.target; + var bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.mix); + break; + } + }; + IkConstraint.prototype.apply1 = function (bone, targetX, targetY, alpha) { + if (!bone.appliedValid) + bone.updateAppliedTransform(); + var p = bone.parent; + var id = 1 / (p.a * p.d - p.b * p.c); + var x = targetX - p.worldX, y = targetY - p.worldY; + var tx = (x * p.d - y * p.b) * id - bone.ax, ty = (y * p.a - x * p.c) * id - bone.ay; + var rotationIK = Math.atan2(ty, tx) * spine.MathUtils.radDeg - bone.ashearX - bone.arotation; + if (bone.ascaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, bone.ascaleX, bone.ascaleY, bone.ashearX, bone.ashearY); + }; + IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + if (!parent.appliedValid) + parent.updateAppliedTransform(); + if (!child.appliedValid) + child.updateAppliedTransform(); + var px = parent.ax, py = parent.ay, psx = parent.ascaleX, psy = parent.ascaleY, csx = child.ascaleX; + var os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + var u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.ay; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + var pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + var id = 1 / (a * d - b * c), x = targetX - pp.worldX, y = targetY - pp.worldY; + var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + x = cwx - pp.worldX; + y = cwy - pp.worldY; + var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1 = 0, a2 = 0; + outer: if (u) { + l2 *= psx; + var cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) + cos = 1; + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + var aa = a * a, bb = b * b, dd = tx * tx + ty * ty, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + var c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + var q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + var r0 = q / c2, r1 = c / q; + var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; + var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; + c = -a * l1 / (aa - bb); + if (c >= -1 && c <= 1) { + c = Math.acos(c); + x = a * Math.cos(c) + l1; + y = b * Math.sin(c); + d = x * x + y * y; + if (d < minDist) { + minAngle = c; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = c; + maxDist = d; + maxX = x; + maxY = y; + } + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + var os = Math.atan2(cy, cx) * s2; + var rotation = parent.arotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, parent.ascaleX, parent.ascaleY, 0, 0); + rotation = child.arotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + }; + return IkConstraint; + }()); + spine.IkConstraint = IkConstraint; })(spine || (spine = {})); var spine; (function (spine) { - var IkConstraintData = (function () { - function IkConstraintData(name) { - this.order = 0; - this.bones = new Array(); - this.bendDirection = 1; - this.mix = 1; - this.name = name; - } - return IkConstraintData; - }()); - spine.IkConstraintData = IkConstraintData; + var IkConstraintData = (function () { + function IkConstraintData(name) { + this.order = 0; + this.bones = new Array(); + this.bendDirection = 1; + this.mix = 1; + this.name = name; + } + return IkConstraintData; + }()); + spine.IkConstraintData = IkConstraintData; })(spine || (spine = {})); var spine; (function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.rotateMix = 0; - this.translateMix = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.rotateMix = data.rotateMix; - this.translateMix = data.translateMix; - } - PathConstraint.prototype.apply = function () { - this.update(); - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var rotateMix = this.rotateMix, translateMix = this.translateMix; - var translate = translateMix > 0, rotate = rotateMix > 0; - if (!translate && !rotate) - return; - var data = this.data; - var spacingMode = data.spacingMode; - var lengthSpacing = spacingMode == spine.SpacingMode.Length; - var rotateMode = data.rotateMode; - var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; - var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var bones = this.bones; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; - var spacing = this.spacing; - if (scale || lengthSpacing) { - if (scale) - lengths = spine.Utils.setArraySize(this.lengths, boneCount); - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength == 0) - setupLength = 0.0000001; - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_1; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; - } - } - else { - for (var i = 1; i < spacesCount; i++) - spaces[i] = spacing; - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * translateMix; - bone.worldY += (boneY - bone.worldY) * translateMix; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_2 = lengths[i]; - if (length_2 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (rotate) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_3 = bone.data.length; - boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; - boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.appliedValid = false; - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (percentPosition) - position *= pathLength_1; - if (percentSpacing) { - for (var i = 0; i < spacesCount; i++) - spaces[i] *= pathLength_1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i]; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_4 = lengths[curve]; - if (p > length_4) - continue; - if (curve == 0) - p /= length_4; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_4 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (percentPosition) - position *= pathLength; - if (percentSpacing) { - for (var i = 0; i < spacesCount; i++) - spaces[i] *= pathLength; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i]; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_5 = curves[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_6 = segments[segment]; - if (p > length_6) - continue; - if (segment == 0) - p /= length_6; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_6 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) - p = 0.0001; - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - }; - PathConstraint.prototype.getOrder = function () { - return this.data.order; - }; - return PathConstraint; - }()); - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - spine.PathConstraint = PathConstraint; + var PathConstraint = (function () { + function PathConstraint(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + PathConstraint.prototype.apply = function () { + this.update(); + }; + PathConstraint.prototype.update = function () { + var attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + var rotateMix = this.rotateMix, translateMix = this.translateMix; + var translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + var data = this.data; + var spacingMode = data.spacingMode; + var lengthSpacing = spacingMode == spine.SpacingMode.Length; + var rotateMode = data.rotateMode; + var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + var bones = this.bones; + var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + var spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + for (var i = 0, n = spacesCount - 1; i < n;) { + var bone = bones[i]; + var setupLength = bone.data.length; + if (setupLength == 0) + setupLength = 0.0000001; + var x = setupLength * bone.a, y = setupLength * bone.c; + var length_1 = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length_1; + spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; + } + } + else { + for (var i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent); + var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + var tip = false; + if (offsetRotation == 0) + tip = rotateMode == spine.RotateMode.Chain; + else { + tip = false; + var p = this.target.bone; + offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + } + for (var i = 0, p = 3; i < boneCount; i++, p += 3) { + var bone = bones[i]; + bone.worldX += (boneX - bone.worldX) * translateMix; + bone.worldY += (boneY - bone.worldY) * translateMix; + var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + var length_2 = lengths[i]; + if (length_2 != 0) { + var s = (Math.sqrt(dx * dx + dy * dy) / length_2 - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + var length_3 = bone.data.length; + boneX += (length_3 * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length_3 * (sin * a + cos * c) - dy) * rotateMix; + } + else { + r += offsetRotation; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + bone.appliedValid = false; + } + }; + PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { + var target = this.target; + var position = this.position; + var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + var closed = path.closed; + var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + var lengths = path.lengths; + curveCount -= closed ? 1 : 2; + var pathLength_1 = lengths[curveCount]; + if (percentPosition) + position *= pathLength_1; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength_1; + } + world = spine.Utils.setArraySize(this.world, 8); + for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength_1; + if (p < 0) + p += pathLength_1; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVertices(target, 2, 4, world, 0, 2); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength_1) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); + } + this.addAfterPosition(p - pathLength_1, world, 0, out, o); + continue; + } + for (;; curve++) { + var length_4 = lengths[curve]; + if (p > length_4) + continue; + if (curve == 0) + p /= length_4; + else { + var prev = lengths[curve - 1]; + p = (p - prev) / (length_4 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); + path.computeWorldVertices(target, 0, 4, world, 4, 2); + } + else + path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); + path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); + } + var curves = spine.Utils.setArraySize(this.curves, curveCount); + var pathLength = 0; + var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (var i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (var i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + var segments = this.segments; + var curveLength = 0; + for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + var space = spaces[i]; + position += space; + var p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + for (;; curve++) { + var length_5 = curves[curve]; + if (p > length_5) + continue; + if (curve == 0) + p /= length_5; + else { + var prev = curves[curve - 1]; + p = (p - prev) / (length_5 - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + var ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + p *= curveLength; + for (;; segment++) { + var length_6 = segments[segment]; + if (p > length_6) + continue; + if (segment == 0) + p /= length_6; + else { + var prev = segments[segment - 1]; + p = segment + (p - prev) / (length_6 - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + }; + PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { + var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { + var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + }; + PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0 || isNaN(p)) + p = 0.0001; + var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + }; + PathConstraint.prototype.getOrder = function () { + return this.data.order; + }; + return PathConstraint; + }()); + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + spine.PathConstraint = PathConstraint; })(spine || (spine = {})); var spine; (function (spine) { - var PathConstraintData = (function () { - function PathConstraintData(name) { - this.order = 0; - this.bones = new Array(); - this.name = name; - } - return PathConstraintData; - }()); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); + var PathConstraintData = (function () { + function PathConstraintData(name) { + this.order = 0; + this.bones = new Array(); + this.name = name; + } + return PathConstraintData; + }()); + spine.PathConstraintData = PathConstraintData; + var PositionMode; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); + var SpacingMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); + var RotateMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); })(spine || (spine = {})); (function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } + if (!Math.fround) { + Math.fround = (function (array) { + return function (x) { + return array[0] = x, array[0]; + }; + })(new Float32Array(1)); + } })(); var spine; (function (spine) { - var Assets = (function () { - function Assets(clientId) { - this.toLoad = new Array(); - this.assets = {}; - this.clientId = clientId; - } - Assets.prototype.loaded = function () { - var i = 0; - for (var v in this.assets) - i++; - return i; - }; - return Assets; - }()); - var SharedAssetManager = (function () { - function SharedAssetManager(pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - this.clientAssets = {}; - this.queuedAssets = {}; - this.rawAssets = {}; - this.errors = {}; - this.pathPrefix = pathPrefix; - } - SharedAssetManager.prototype.queueAsset = function (clientId, textureLoader, path) { - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) { - clientAssets = new Assets(clientId); - this.clientAssets[clientId] = clientAssets; - } - if (textureLoader !== null) - clientAssets.textureLoader = textureLoader; - clientAssets.toLoad.push(path); - if (this.queuedAssets[path] === path) { - return false; - } - else { - this.queuedAssets[path] = path; - return true; - } - }; - SharedAssetManager.prototype.loadText = function (clientId, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, null, path)) - return; - var request = new XMLHttpRequest(); - request.onreadystatechange = function () { - if (request.readyState == XMLHttpRequest.DONE) { - if (request.status >= 200 && request.status < 300) { - _this.rawAssets[path] = request.responseText; - } - else { - _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; - } - } - }; - request.open("GET", path, true); - request.send(); - }; - SharedAssetManager.prototype.loadJson = function (clientId, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, null, path)) - return; - var request = new XMLHttpRequest(); - request.onreadystatechange = function () { - if (request.readyState == XMLHttpRequest.DONE) { - if (request.status >= 200 && request.status < 300) { - _this.rawAssets[path] = JSON.parse(request.responseText); - } - else { - _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; - } - } - }; - request.open("GET", path, true); - request.send(); - }; - SharedAssetManager.prototype.loadTexture = function (clientId, textureLoader, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, textureLoader, path)) - return; - var img = new Image(); - img.src = path; - img.crossOrigin = "anonymous"; - img.onload = function (ev) { - _this.rawAssets[path] = img; - }; - img.onerror = function (ev) { - _this.errors[path] = "Couldn't load image " + path; - }; - }; - SharedAssetManager.prototype.get = function (clientId, path) { - path = this.pathPrefix + path; - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) - return true; - return clientAssets.assets[path]; - }; - SharedAssetManager.prototype.updateClientAssets = function (clientAssets) { - for (var i = 0; i < clientAssets.toLoad.length; i++) { - var path = clientAssets.toLoad[i]; - var asset = clientAssets.assets[path]; - if (asset === null || asset === undefined) { - var rawAsset = this.rawAssets[path]; - if (rawAsset === null || rawAsset === undefined) - continue; - if (rawAsset instanceof HTMLImageElement) { - clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); - } - else { - clientAssets.assets[path] = rawAsset; - } - } - } - }; - SharedAssetManager.prototype.isLoadingComplete = function (clientId) { - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) - return true; - this.updateClientAssets(clientAssets); - return clientAssets.toLoad.length == clientAssets.loaded(); - }; - SharedAssetManager.prototype.dispose = function () { - }; - SharedAssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - SharedAssetManager.prototype.getErrors = function () { - return this.errors; - }; - return SharedAssetManager; - }()); - spine.SharedAssetManager = SharedAssetManager; + var Assets = (function () { + function Assets(clientId) { + this.toLoad = new Array(); + this.assets = {}; + this.clientId = clientId; + } + Assets.prototype.loaded = function () { + var i = 0; + for (var v in this.assets) + i++; + return i; + }; + return Assets; + }()); + var SharedAssetManager = (function () { + function SharedAssetManager(pathPrefix) { + if (pathPrefix === void 0) { pathPrefix = ""; } + this.clientAssets = {}; + this.queuedAssets = {}; + this.rawAssets = {}; + this.errors = {}; + this.pathPrefix = pathPrefix; + } + SharedAssetManager.prototype.queueAsset = function (clientId, textureLoader, path) { + var clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) { + clientAssets = new Assets(clientId); + this.clientAssets[clientId] = clientAssets; + } + if (textureLoader !== null) + clientAssets.textureLoader = textureLoader; + clientAssets.toLoad.push(path); + if (this.queuedAssets[path] === path) { + return false; + } + else { + this.queuedAssets[path] = path; + return true; + } + }; + SharedAssetManager.prototype.loadText = function (clientId, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) + return; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + _this.rawAssets[path] = request.responseText; + } + else { + _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + } + }; + request.open("GET", path, true); + request.send(); + }; + SharedAssetManager.prototype.loadJson = function (clientId, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) + return; + var request = new XMLHttpRequest(); + request.onreadystatechange = function () { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + _this.rawAssets[path] = JSON.parse(request.responseText); + } + else { + _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; + } + } + }; + request.open("GET", path, true); + request.send(); + }; + SharedAssetManager.prototype.loadTexture = function (clientId, textureLoader, path) { + var _this = this; + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, textureLoader, path)) + return; + var img = new Image(); + img.src = path; + img.crossOrigin = "anonymous"; + img.onload = function (ev) { + _this.rawAssets[path] = img; + }; + img.onerror = function (ev) { + _this.errors[path] = "Couldn't load image " + path; + }; + }; + SharedAssetManager.prototype.get = function (clientId, path) { + path = this.pathPrefix + path; + var clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) + return true; + return clientAssets.assets[path]; + }; + SharedAssetManager.prototype.updateClientAssets = function (clientAssets) { + for (var i = 0; i < clientAssets.toLoad.length; i++) { + var path = clientAssets.toLoad[i]; + var asset = clientAssets.assets[path]; + if (asset === null || asset === undefined) { + var rawAsset = this.rawAssets[path]; + if (rawAsset === null || rawAsset === undefined) + continue; + if (rawAsset instanceof HTMLImageElement) { + clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); + } + else { + clientAssets.assets[path] = rawAsset; + } + } + } + }; + SharedAssetManager.prototype.isLoadingComplete = function (clientId) { + var clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) + return true; + this.updateClientAssets(clientAssets); + return clientAssets.toLoad.length == clientAssets.loaded(); + }; + SharedAssetManager.prototype.dispose = function () { + }; + SharedAssetManager.prototype.hasErrors = function () { + return Object.keys(this.errors).length > 0; + }; + SharedAssetManager.prototype.getErrors = function () { + return this.errors; + }; + return SharedAssetManager; + }()); + spine.SharedAssetManager = SharedAssetManager; })(spine || (spine = {})); var spine; (function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.updateCacheReset = new Array(); - this.time = 0; - this.flipX = false; - this.flipY = false; - this.x = 0; - this.y = 0; - if (data == null) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (boneData.parent == null) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - this.updateCacheReset.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].sorted = false; - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length > 1) { - var child = constrained[constrained.length - 1]; - if (!(this._updateCache.indexOf(child) > -1)) - this.updateCacheReset.push(child); - } - this._updateCache.push(constraint); - this.sortReset(parent.children); - constrained[constrained.length - 1].sorted = true; - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin != null) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - if (!(this._updateCache.indexOf(child) > -1)) - this.updateCacheReset.push(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var ii = 0; ii < boneCount; ii++) - this.sortReset(constrained[ii].children); - for (var ii = 0; ii < boneCount; ii++) - constrained[ii].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (pathBones == null) - this.sortBone(slotBone); - else { - var bones = this.bones; - var i = 0; - while (i < pathBones.length) { - var boneCount = pathBones[i++]; - for (var n = i + boneCount; i < n; i++) { - var boneIndex = pathBones[i]; - this.sortBone(bones[boneIndex]); - } - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent != null) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var updateCacheReset = this.updateCacheReset; - for (var i = 0, n = updateCacheReset.length; i < n; i++) { - var bone = updateCacheReset[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - bone.appliedValid = true; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.bendDirection = constraint.data.bendDirection; - constraint.mix = constraint.data.mix; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - constraint.scaleMix = data.scaleMix; - constraint.shearMix = data.shearMix; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (skin == null) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin != null) { - if (this.skin != null) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1 != null) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment != null) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (attachmentName == null) - throw new Error("attachmentName cannot be null."); - if (this.skin != null) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment != null) - return attachment; - } - if (this.data.defaultSkin != null) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName != null) { - attachment = this.getAttachment(i, attachmentName); - if (attachment == null) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (offset == null) - throw new Error("offset cannot be null."); - if (size == null) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices != null) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; + var Skeleton = (function () { + function Skeleton(data) { + this._updateCache = new Array(); + this.updateCacheReset = new Array(); + this.time = 0; + this.flipX = false; + this.flipY = false; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) { + var boneData = data.bones[i]; + var bone = void 0; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + var parent_1 = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent_1); + parent_1.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (var i = 0; i < data.slots.length; i++) { + var slotData = data.slots[i]; + var bone = this.bones[slotData.boneData.index]; + var slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + for (var i = 0; i < data.ikConstraints.length; i++) { + var ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (var i = 0; i < data.transformConstraints.length; i++) { + var transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (var i = 0; i < data.pathConstraints.length; i++) { + var pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + Skeleton.prototype.updateCache = function () { + var updateCache = this._updateCache; + updateCache.length = 0; + this.updateCacheReset.length = 0; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].sorted = false; + var ikConstraints = this.ikConstraints; + var transformConstraints = this.transformConstraints; + var pathConstraints = this.pathConstraints; + var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; + var constraintCount = ikCount + transformCount + pathCount; + outer: for (var i = 0; i < constraintCount; i++) { + for (var ii = 0; ii < ikCount; ii++) { + var constraint = ikConstraints[ii]; + if (constraint.data.order == i) { + this.sortIkConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < transformCount; ii++) { + var constraint = transformConstraints[ii]; + if (constraint.data.order == i) { + this.sortTransformConstraint(constraint); + continue outer; + } + } + for (var ii = 0; ii < pathCount; ii++) { + var constraint = pathConstraints[ii]; + if (constraint.data.order == i) { + this.sortPathConstraint(constraint); + continue outer; + } + } + } + for (var i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + }; + Skeleton.prototype.sortIkConstraint = function (constraint) { + var target = constraint.target; + this.sortBone(target); + var constrained = constraint.bones; + var parent = constrained[0]; + this.sortBone(parent); + if (constrained.length > 1) { + var child = constrained[constrained.length - 1]; + if (!(this._updateCache.indexOf(child) > -1)) + this.updateCacheReset.push(child); + } + this._updateCache.push(constraint); + this.sortReset(parent.children); + constrained[constrained.length - 1].sorted = true; + }; + Skeleton.prototype.sortPathConstraint = function (constraint) { + var slot = constraint.target; + var slotIndex = slot.data.index; + var slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (var i = 0, n = this.data.skins.length; i < n; i++) + this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); + var attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + var constrained = constraint.bones; + var boneCount = constrained.length; + for (var i = 0; i < boneCount; i++) + this.sortBone(constrained[i]); + this._updateCache.push(constraint); + for (var i = 0; i < boneCount; i++) + this.sortReset(constrained[i].children); + for (var i = 0; i < boneCount; i++) + constrained[i].sorted = true; + }; + Skeleton.prototype.sortTransformConstraint = function (constraint) { + this.sortBone(constraint.target); + var constrained = constraint.bones; + var boneCount = constrained.length; + if (constraint.data.local) { + for (var i = 0; i < boneCount; i++) { + var child = constrained[i]; + this.sortBone(child.parent); + if (!(this._updateCache.indexOf(child) > -1)) + this.updateCacheReset.push(child); + } + } + else { + for (var i = 0; i < boneCount; i++) { + this.sortBone(constrained[i]); + } + } + this._updateCache.push(constraint); + for (var ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (var ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + }; + Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { + var attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (var key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + }; + Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + var pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + var bones = this.bones; + var i = 0; + while (i < pathBones.length) { + var boneCount = pathBones[i++]; + for (var n = i + boneCount; i < n; i++) { + var boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + } + }; + Skeleton.prototype.sortBone = function (bone) { + if (bone.sorted) + return; + var parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + }; + Skeleton.prototype.sortReset = function (bones) { + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + }; + Skeleton.prototype.updateWorldTransform = function () { + var updateCacheReset = this.updateCacheReset; + for (var i = 0, n = updateCacheReset.length; i < n; i++) { + var bone = updateCacheReset[i]; + bone.ax = bone.x; + bone.ay = bone.y; + bone.arotation = bone.rotation; + bone.ascaleX = bone.scaleX; + bone.ascaleY = bone.scaleY; + bone.ashearX = bone.shearX; + bone.ashearY = bone.shearY; + bone.appliedValid = true; + } + var updateCache = this._updateCache; + for (var i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + }; + Skeleton.prototype.setToSetupPose = function () { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + }; + Skeleton.prototype.setBonesToSetupPose = function () { + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + var data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + var data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + }; + Skeleton.prototype.setSlotsToSetupPose = function () { + var slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (var i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + }; + Skeleton.prototype.getRootBone = function () { + if (this.bones.length == 0) + return null; + return this.bones[0]; + }; + Skeleton.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + }; + Skeleton.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + }; + Skeleton.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + }; + Skeleton.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + }; + Skeleton.prototype.setSkinByName = function (skinName) { + var skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + }; + Skeleton.prototype.setSkin = function (newSkin) { + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var name_1 = slot.data.attachmentName; + if (name_1 != null) { + var attachment = newSkin.getAttachment(i, name_1); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + }; + Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + }; + Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + var attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + }; + Skeleton.prototype.setAttachment = function (slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.data.name == slotName) { + var attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + }; + Skeleton.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + }; + Skeleton.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + Skeleton.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + }; + Skeleton.prototype.getBounds = function (offset, size, temp) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + var drawOrder = this.drawOrder; + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var slot = drawOrder[i]; + var verticesLength = 0; + var vertices = null; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) { + verticesLength = 8; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(slot.bone, vertices, 0, 2); + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + verticesLength = mesh.worldVerticesLength; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); + } + if (vertices != null) { + for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { + var x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + }; + Skeleton.prototype.update = function (delta) { + this.time += delta; + }; + return Skeleton; + }()); + spine.Skeleton = Skeleton; })(spine || (spine = {})); var spine; (function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (boundingBox == null) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; + var SkeletonBounds = (function () { + function SkeletonBounds() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this.polygonPool = new spine.Pool(function () { + return spine.Utils.newFloatArray(16); + }); + } + SkeletonBounds.prototype.update = function (skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + var boundingBoxes = this.boundingBoxes; + var polygons = this.polygons; + var polygonPool = this.polygonPool; + var slots = skeleton.slots; + var slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (var i = 0; i < slotCount; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + var boundingBox = attachment; + boundingBoxes.push(boundingBox); + var polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); + } + } + if (updateAabb) { + this.aabbCompute(); + } + else { + this.minX = Number.POSITIVE_INFINITY; + this.minY = Number.POSITIVE_INFINITY; + this.maxX = Number.NEGATIVE_INFINITY; + this.maxY = Number.NEGATIVE_INFINITY; + } + }; + SkeletonBounds.prototype.aabbCompute = function () { + var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + var vertices = polygon; + for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { + var x = vertices[ii]; + var y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + }; + SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + }; + SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { + var minX = this.minX; + var minY = this.minY; + var maxX = this.maxX; + var maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + var m = (y2 - y1) / (x2 - x1); + var y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + var x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + }; + SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + }; + SkeletonBounds.prototype.containsPoint = function (x, y) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + }; + SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { + var vertices = polygon; + var nn = polygon.length; + var prevIndex = nn - 2; + var inside = false; + for (var ii = 0; ii < nn; ii += 2) { + var vertexY = vertices[ii + 1]; + var prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + var vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + }; + SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { + var polygons = this.polygons; + for (var i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + }; + SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { + var vertices = polygon; + var nn = polygon.length; + var width12 = x1 - x2, height12 = y1 - y2; + var det1 = x1 * y2 - y1 * x2; + var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (var ii = 0; ii < nn; ii += 2) { + var x4 = vertices[ii], y4 = vertices[ii + 1]; + var det2 = x3 * y4 - y3 * x4; + var width34 = x3 - x4, height34 = y3 - y4; + var det3 = width12 * height34 - height12 * width34; + var x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + var y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + }; + SkeletonBounds.prototype.getPolygon = function (boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + var index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + }; + SkeletonBounds.prototype.getWidth = function () { + return this.maxX - this.minX; + }; + SkeletonBounds.prototype.getHeight = function () { + return this.maxY - this.minY; + }; + return SkeletonBounds; + }()); + spine.SkeletonBounds = SkeletonBounds; })(spine || (spine = {})); var spine; (function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment != null) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment != null && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (this.clipAttachment == null) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; + var SkeletonClipping = (function () { + function SkeletonClipping() { + this.triangulator = new spine.Triangulator(); + this.clippingPolygon = new Array(); + this.clipOutput = new Array(); + this.clippedVertices = new Array(); + this.clippedTriangles = new Array(); + this.scratch = new Array(); + } + SkeletonClipping.prototype.clipStart = function (slot, clip) { + if (this.clipAttachment != null) + return 0; + this.clipAttachment = clip; + var n = clip.worldVerticesLength; + var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); + clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); + var clippingPolygon = this.clippingPolygon; + SkeletonClipping.makeClockwise(clippingPolygon); + var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); + for (var i = 0, n_1 = clippingPolygons.length; i < n_1; i++) { + var polygon = clippingPolygons[i]; + SkeletonClipping.makeClockwise(polygon); + polygon.push(polygon[0]); + polygon.push(polygon[1]); + } + return clippingPolygons.length; + }; + SkeletonClipping.prototype.clipEndWithSlot = function (slot) { + if (this.clipAttachment != null && this.clipAttachment.endSlot == slot.data) + this.clipEnd(); + }; + SkeletonClipping.prototype.clipEnd = function () { + if (this.clipAttachment == null) + return; + this.clipAttachment = null; + this.clippingPolygons = null; + this.clippedVertices.length = 0; + this.clippedTriangles.length = 0; + this.clippingPolygon.length = 0; + }; + SkeletonClipping.prototype.isClipping = function () { + return this.clipAttachment != null; + }; + SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { + var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + var clippedTriangles = this.clippedTriangles; + var polygons = this.clippingPolygons; + var polygonsCount = this.clippingPolygons.length; + var vertexSize = twoColor ? 12 : 8; + var index = 0; + clippedVertices.length = 0; + clippedTriangles.length = 0; + outer: for (var i = 0; i < trianglesLength; i += 3) { + var vertexOffset = triangles[i] << 1; + var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; + var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 1] << 1; + var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; + var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 2] << 1; + var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; + var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; + for (var p = 0; p < polygonsCount; p++) { + var s = clippedVertices.length; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { + var clipOutputLength = clipOutput.length; + if (clipOutputLength == 0) + continue; + var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; + var d = 1 / (d0 * d2 + d1 * (y1 - y3)); + var clipOutputCount = clipOutputLength >> 1; + var clipOutputItems = this.clipOutput; + var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); + for (var ii = 0; ii < clipOutputLength; ii += 2) { + var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + clippedVerticesItems[s] = x; + clippedVerticesItems[s + 1] = y; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + var c0 = x - x3, c1 = y - y3; + var a = (d0 * c0 + d1 * c1) * d; + var b = (d4 * c0 + d2 * c1) * d; + var c = 1 - a - b; + clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; + clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + } + s += vertexSize; + } + s = clippedTriangles.length; + var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (var ii = 1; ii < clipOutputCount; ii++) { + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + ii); + clippedTrianglesItems[s + 2] = (index + ii + 1); + s += 3; + } + index += clipOutputCount + 1; + } + else { + var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); + clippedVerticesItems[s] = x1; + clippedVerticesItems[s + 1] = y1; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + if (!twoColor) { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = x2; + clippedVerticesItems[s + 9] = y2; + clippedVerticesItems[s + 10] = light.r; + clippedVerticesItems[s + 11] = light.g; + clippedVerticesItems[s + 12] = light.b; + clippedVerticesItems[s + 13] = light.a; + clippedVerticesItems[s + 14] = u2; + clippedVerticesItems[s + 15] = v2; + clippedVerticesItems[s + 16] = x3; + clippedVerticesItems[s + 17] = y3; + clippedVerticesItems[s + 18] = light.r; + clippedVerticesItems[s + 19] = light.g; + clippedVerticesItems[s + 20] = light.b; + clippedVerticesItems[s + 21] = light.a; + clippedVerticesItems[s + 22] = u3; + clippedVerticesItems[s + 23] = v3; + } + else { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + clippedVerticesItems[s + 12] = x2; + clippedVerticesItems[s + 13] = y2; + clippedVerticesItems[s + 14] = light.r; + clippedVerticesItems[s + 15] = light.g; + clippedVerticesItems[s + 16] = light.b; + clippedVerticesItems[s + 17] = light.a; + clippedVerticesItems[s + 18] = u2; + clippedVerticesItems[s + 19] = v2; + clippedVerticesItems[s + 20] = dark.r; + clippedVerticesItems[s + 21] = dark.g; + clippedVerticesItems[s + 22] = dark.b; + clippedVerticesItems[s + 23] = dark.a; + clippedVerticesItems[s + 24] = x3; + clippedVerticesItems[s + 25] = y3; + clippedVerticesItems[s + 26] = light.r; + clippedVerticesItems[s + 27] = light.g; + clippedVerticesItems[s + 28] = light.b; + clippedVerticesItems[s + 29] = light.a; + clippedVerticesItems[s + 30] = u3; + clippedVerticesItems[s + 31] = v3; + clippedVerticesItems[s + 32] = dark.r; + clippedVerticesItems[s + 33] = dark.g; + clippedVerticesItems[s + 34] = dark.b; + clippedVerticesItems[s + 35] = dark.a; + } + s = clippedTriangles.length; + var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + 1); + clippedTrianglesItems[s + 2] = (index + 2); + index += 3; + continue outer; + } + } + } + }; + SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { + var originalOutput = output; + var clipped = false; + var input = null; + if (clippingArea.length % 4 >= 2) { + input = output; + output = this.scratch; + } + else + input = this.scratch; + input.length = 0; + input.push(x1); + input.push(y1); + input.push(x2); + input.push(y2); + input.push(x3); + input.push(y3); + input.push(x1); + input.push(y1); + output.length = 0; + var clippingVertices = clippingArea; + var clippingVerticesLast = clippingArea.length - 4; + for (var i = 0;; i += 2) { + var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; + var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; + var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; + var inputVertices = input; + var inputVerticesLength = input.length - 2, outputStart = output.length; + for (var ii = 0; ii < inputVerticesLength; ii += 2) { + var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; + var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; + var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; + if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { + if (side2) { + output.push(inputX2); + output.push(inputY2); + continue; + } + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } + else if (side2) { + var c0 = inputY2 - inputY, c2 = inputX2 - inputX; + var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / (c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY)); + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + output.push(inputX2); + output.push(inputY2); + } + clipped = true; + } + if (outputStart == output.length) { + originalOutput.length = 0; + return true; + } + output.push(output[0]); + output.push(output[1]); + if (i == clippingVerticesLast) + break; + var temp = output; + output = input; + output.length = 0; + input = temp; + } + if (originalOutput != output) { + originalOutput.length = 0; + for (var i = 0, n = output.length - 2; i < n; i++) + originalOutput[i] = output[i]; + } + else + originalOutput.length = originalOutput.length - 2; + return clipped; + }; + SkeletonClipping.makeClockwise = function (polygon) { + var vertices = polygon; + var verticeslength = polygon.length; + var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; + for (var i = 0, n = verticeslength - 3; i < n; i += 2) { + p1x = vertices[i]; + p1y = vertices[i + 1]; + p2x = vertices[i + 2]; + p2y = vertices[i + 3]; + area += p1x * p2y - p2x * p1y; + } + if (area < 0) + return; + for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { + var x = vertices[i], y = vertices[i + 1]; + var other = lastX - i; + vertices[i] = vertices[other]; + vertices[i + 1] = vertices[other + 1]; + vertices[other] = x; + vertices[other + 1] = y; + } + }; + return SkeletonClipping; + }()); + spine.SkeletonClipping = SkeletonClipping; })(spine || (spine = {})); var spine; (function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (skinName == null) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (eventDataName == null) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_4 = events[i]; - if (event_4.name == eventDataName) - return event_4; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (animationName == null) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { - if (pathConstraintName == null) - throw new Error("pathConstraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) - if (pathConstraints[i].name == pathConstraintName) - return i; - return -1; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; + var SkeletonData = (function () { + function SkeletonData() { + this.bones = new Array(); + this.slots = new Array(); + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + this.fps = 0; + } + SkeletonData.prototype.findBone = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + }; + SkeletonData.prototype.findBoneIndex = function (boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + }; + SkeletonData.prototype.findSlot = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + }; + SkeletonData.prototype.findSlotIndex = function (slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + var slots = this.slots; + for (var i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + }; + SkeletonData.prototype.findSkin = function (skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + var skins = this.skins; + for (var i = 0, n = skins.length; i < n; i++) { + var skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + }; + SkeletonData.prototype.findEvent = function (eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + var events = this.events; + for (var i = 0, n = events.length; i < n; i++) { + var event_4 = events[i]; + if (event_4.name == eventDataName) + return event_4; + } + return null; + }; + SkeletonData.prototype.findAnimation = function (animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + var animations = this.animations; + for (var i = 0, n = animations.length; i < n; i++) { + var animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + }; + SkeletonData.prototype.findIkConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var ikConstraints = this.ikConstraints; + for (var i = 0, n = ikConstraints.length; i < n; i++) { + var constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findTransformConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var transformConstraints = this.transformConstraints; + for (var i = 0, n = transformConstraints.length; i < n; i++) { + var constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraint = function (constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) { + var constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + }; + SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + var pathConstraints = this.pathConstraints; + for (var i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + }; + return SkeletonData; + }()); + spine.SkeletonData = SkeletonData; })(spine || (spine = {})); var spine; (function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap != null) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_2 = null; - var parentName = this.getValue(boneMap, "parent", null); - if (parentName != null) { - parent_2 = skeletonData.findBone(parentName); - if (parent_2 == null) - throw new Error("Parent bone not found: " + parentName); - } - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_2); - data.length = this.getValue(boneMap, "length", 0) * scale; - data.x = this.getValue(boneMap, "x", 0) * scale; - data.y = this.getValue(boneMap, "y", 0) * scale; - data.rotation = this.getValue(boneMap, "rotation", 0); - data.scaleX = this.getValue(boneMap, "scaleX", 1); - data.scaleY = this.getValue(boneMap, "scaleY", 1); - data.shearX = this.getValue(boneMap, "shearX", 0); - data.shearY = this.getValue(boneMap, "shearY", 0); - data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var slotName = slotMap.name; - var boneName = slotMap.bone; - var boneData = skeletonData.findBone(boneName); - if (boneData == null) - throw new Error("Slot bone not found: " + boneName); - var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); - var color = this.getValue(slotMap, "color", null); - if (color != null) - data.color.setFromString(color); - var dark = this.getValue(slotMap, "dark", null); - if (dark != null) { - data.darkColor = new spine.Color(1, 1, 1, 1); - data.darkColor.setFromString(dark); - } - data.attachmentName = this.getValue(slotMap, "attachment", null); - data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("IK bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - if (data.target == null) - throw new Error("IK target bone not found: " + targetName); - data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.mix = this.getValue(constraintMap, "mix", 1); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("Transform constraint bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - if (data.target == null) - throw new Error("Transform constraint target bone not found: " + targetName); - data.local = this.getValue(constraintMap, "local", false); - data.relative = this.getValue(constraintMap, "relative", false); - data.offsetRotation = this.getValue(constraintMap, "rotation", 0); - data.offsetX = this.getValue(constraintMap, "x", 0) * scale; - data.offsetY = this.getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); - data.offsetShearY = this.getValue(constraintMap, "shearY", 0); - data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); - data.translateMix = this.getValue(constraintMap, "translateMix", 1); - data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); - data.shearMix = this.getValue(constraintMap, "shearMix", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("Transform constraint bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - if (data.target == null) - throw new Error("Path target slot not found: " + targetName); - data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); - data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); - data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); - data.offsetRotation = this.getValue(constraintMap, "rotation", 0); - data.position = this.getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = this.getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); - data.translateMix = this.getValue(constraintMap, "translateMix", 1); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var skinName in root.skins) { - var skinMap = root.skins[skinName]; - var skin = new spine.Skin(skinName); - for (var slotName in skinMap) { - var slotIndex = skeletonData.findSlotIndex(slotName); - if (slotIndex == -1) - throw new Error("Slot not found: " + slotName); - var slotMap = skinMap[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName, skeletonData); - if (attachment != null) - skin.addAttachment(slotIndex, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - if (skin == null) - throw new Error("Skin not found: " + linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - if (parent_3 == null) - throw new Error("Parent mesh not found: " + linkedMesh.parent); - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = this.getValue(eventMap, "int", 0); - data.floatValue = this.getValue(eventMap, "float", 0); - data.stringValue = this.getValue(eventMap, "string", ""); - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = this.getValue(map, "name", name); - var type = this.getValue(map, "type", "region"); - switch (type) { - case "region": { - var path = this.getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (region == null) - return null; - region.path = path; - region.x = this.getValue(map, "x", 0) * scale; - region.y = this.getValue(map, "y", 0) * scale; - region.scaleX = this.getValue(map, "scaleX", 1); - region.scaleY = this.getValue(map, "scaleY", 1); - region.rotation = this.getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = this.getValue(map, "color", null); - if (color != null) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (box == null) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = this.getValue(map, "color", null); - if (color != null) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = this.getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (mesh == null) - return null; - mesh.path = path; - var color = this.getValue(map, "color", null); - if (color != null) - mesh.color.setFromString(color); - var parent_4 = this.getValue(map, "parent", null); - if (parent_4 != null) { - mesh.inheritDeform = this.getValue(map, "deform", true); - this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_4)); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = this.getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (path == null) - return null; - path.closed = this.getValue(map, "closed", false); - path.constantSpeed = this.getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = this.getValue(map, "color", null); - if (color != null) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (point == null) - return null; - point.x = this.getValue(map, "x", 0) * scale; - point.y = this.getValue(map, "y", 0) * scale; - point.rotation = this.getValue(map, "rotation", 0); - var color = this.getValue(map, "color", null); - if (color != null) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (clip == null) - return null; - var end = this.getValue(map, "end", null); - if (end != null) { - var slot = skeletonData.findSlot(end); - if (slot == null) - throw new Error("Clipping end slot not found: " + end); - clip.endSlot = slot; - } - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = this.getValue(map, "color", null); - if (color != null) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - var duration = 0; - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - if (slotIndex == -1) - throw new Error("Slot not found: " + slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - else if (timelineName == "color") { - var timeline = new spine.ColorTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var color = new spine.Color(); - color.setFromString(valueMap.color); - timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); - } - else if (timelineName == "twoColor") { - var timeline = new spine.TwoColorTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var light = new spine.Color(); - var dark = new spine.Color(); - light.setFromString(valueMap.light); - dark.setFromString(valueMap.dark); - timeline.setFrame(frameIndex, valueMap.time, light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TwoColorTimeline.ENTRIES]); - } - else - throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - if (boneIndex == -1) - throw new Error("Bone not found: " + boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineName === "rotate") { - var timeline = new spine.RotateTimeline(timelineMap.length); - timeline.boneIndex = boneIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); - } - else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { - var timeline = null; - var timelineScale = 1; - if (timelineName === "scale") - timeline = new spine.ScaleTimeline(timelineMap.length); - else if (timelineName === "shear") - timeline = new spine.ShearTimeline(timelineMap.length); - else { - timeline = new spine.TranslateTimeline(timelineMap.length); - timelineScale = scale; - } - timeline.boneIndex = boneIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); - timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); - } - else - throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var constraint = skeletonData.findIkConstraint(constraintName); - var timeline = new spine.IkConstraintTimeline(constraintMap.length); - timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var frameIndex = 0; - for (var i = 0; i < constraintMap.length; i++) { - var valueMap = constraintMap[i]; - timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var constraintMap = map.transform[constraintName]; - var constraint = skeletonData.findTransformConstraint(constraintName); - var timeline = new spine.TransformConstraintTimeline(constraintMap.length); - timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var frameIndex = 0; - for (var i = 0; i < constraintMap.length; i++) { - var valueMap = constraintMap[i]; - timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); - } - } - if (map.paths) { - for (var constraintName in map.paths) { - var constraintMap = map.paths[constraintName]; - var index = skeletonData.findPathConstraintIndex(constraintName); - if (index == -1) - throw new Error("Path constraint not found: " + constraintName); - var data = skeletonData.pathConstraints[index]; - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - if (timelineName === "position" || timelineName === "spacing") { - var timeline = null; - var timelineScale = 1; - if (timelineName === "spacing") { - timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - timelineScale = scale; - } - else { - timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); - if (data.positionMode == spine.PositionMode.Fixed) - timelineScale = scale; - } - timeline.pathConstraintIndex = index; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); - timeline.pathConstraintIndex = index; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - if (skin == null) - throw new Error("Skin not found: " + deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - if (slotIndex == -1) - throw new Error("Slot not found: " + slotMap.name); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var attachment = skin.getAttachment(slotIndex, timelineName); - if (attachment == null) - throw new Error("Deform attachment not found: " + timelineMap.name); - var weighted = attachment.bones != null; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - timeline.attachment = attachment; - var frameIndex = 0; - for (var j = 0; j < timelineMap.length; j++) { - var valueMap = timelineMap[j]; - var deform = void 0; - var verticesValue = this.getValue(valueMap, "vertices", null); - if (verticesValue == null) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = this.getValue(valueMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frameIndex, valueMap.time, deform); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - } - } - } - var drawOrderNode = map.drawOrder; - if (drawOrderNode == null) - drawOrderNode = map.draworder; - if (drawOrderNode != null) { - var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); - var slotCount = skeletonData.slots.length; - var frameIndex = 0; - for (var j = 0; j < drawOrderNode.length; j++) { - var drawOrderMap = drawOrderNode[j]; - var drawOrder = null; - var offsets = this.getValue(drawOrderMap, "offsets", null); - if (offsets != null) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var i = 0; i < offsets.length; i++) { - var offsetMap = offsets[i]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - if (slotIndex == -1) - throw new Error("Slot not found: " + offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var i = slotCount - 1; i >= 0; i--) - if (drawOrder[i] == -1) - drawOrder[i] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frameIndex = 0; - for (var i = 0; i < map.events.length; i++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - if (eventData == null) - throw new Error("Event not found: " + eventMap.name); - var event_5 = new spine.Event(spine.Utils.toSinglePrecision(eventMap.time), eventData); - event_5.intValue = this.getValue(eventMap, "int", eventData.intValue); - event_5.floatValue = this.getValue(eventMap, "float", eventData.floatValue); - event_5.stringValue = this.getValue(eventMap, "string", eventData.stringValue); - timeline.setFrame(frameIndex++, event_5); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - if (isNaN(duration)) { - throw new Error("Error while parsing animation, duration is NaN"); - } - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { - if (!map.curve) - return; - if (map.curve === "stepped") - timeline.setStepped(frameIndex); - else if (Object.prototype.toString.call(map.curve) === '[object Array]') { - var curve = map.curve; - timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); - } - }; - SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { - return map[prop] !== undefined ? map[prop] : defaultValue; - }; - SkeletonJson.blendModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "normal") - return spine.BlendMode.Normal; - if (str == "additive") - return spine.BlendMode.Additive; - if (str == "multiply") - return spine.BlendMode.Multiply; - if (str == "screen") - return spine.BlendMode.Screen; - throw new Error("Unknown blend mode: " + str); - }; - SkeletonJson.positionModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "fixed") - return spine.PositionMode.Fixed; - if (str == "percent") - return spine.PositionMode.Percent; - throw new Error("Unknown position mode: " + str); - }; - SkeletonJson.spacingModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "length") - return spine.SpacingMode.Length; - if (str == "fixed") - return spine.SpacingMode.Fixed; - if (str == "percent") - return spine.SpacingMode.Percent; - throw new Error("Unknown position mode: " + str); - }; - SkeletonJson.rotateModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "tangent") - return spine.RotateMode.Tangent; - if (str == "chain") - return spine.RotateMode.Chain; - if (str == "chainscale") - return spine.RotateMode.ChainScale; - throw new Error("Unknown rotate mode: " + str); - }; - SkeletonJson.transformModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "normal") - return spine.TransformMode.Normal; - if (str == "onlytranslation") - return spine.TransformMode.OnlyTranslation; - if (str == "norotationorreflection") - return spine.TransformMode.NoRotationOrReflection; - if (str == "noscale") - return spine.TransformMode.NoScale; - if (str == "noscaleorreflection") - return spine.TransformMode.NoScaleOrReflection; - throw new Error("Unknown transform mode: " + str); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - } - return LinkedMesh; - }()); + var SkeletonJson = (function () { + function SkeletonJson(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + SkeletonJson.prototype.readSkeletonData = function (json) { + var scale = this.scale; + var skeletonData = new spine.SkeletonData(); + var root = typeof (json) === "string" ? JSON.parse(json) : json; + var skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.fps = skeletonMap.fps; + skeletonData.imagesPath = skeletonMap.images; + } + if (root.bones) { + for (var i = 0; i < root.bones.length; i++) { + var boneMap = root.bones[i]; + var parent_2 = null; + var parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent_2 = skeletonData.findBone(parentName); + if (parent_2 == null) + throw new Error("Parent bone not found: " + parentName); + } + var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_2); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); + skeletonData.bones.push(data); + } + } + if (root.slots) { + for (var i = 0; i < root.slots.length; i++) { + var slotMap = root.slots[i]; + var slotName = slotMap.name; + var boneName = slotMap.bone; + var boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + var color = this.getValue(slotMap, "color", null); + if (color != null) + data.color.setFromString(color); + var dark = this.getValue(slotMap, "dark", null); + if (dark != null) { + data.darkColor = new spine.Color(1, 1, 1, 1); + data.darkColor.setFromString(dark); + } + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + if (root.ik) { + for (var i = 0; i < root.ik.length; i++) { + var constraintMap = root.ik[i]; + var data = new spine.IkConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.mix = this.getValue(constraintMap, "mix", 1); + skeletonData.ikConstraints.push(data); + } + } + if (root.transform) { + for (var i = 0; i < root.transform.length; i++) { + var constraintMap = root.transform[i]; + var data = new spine.TransformConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.local = this.getValue(constraintMap, "local", false); + data.relative = this.getValue(constraintMap, "relative", false); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + if (root.path) { + for (var i = 0; i < root.path.length; i++) { + var constraintMap = root.path[i]; + var data = new spine.PathConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + for (var j = 0; j < constraintMap.bones.length; j++) { + var boneName = constraintMap.bones[j]; + var bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + var targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + if (root.skins) { + for (var skinName in root.skins) { + var skinMap = root.skins[skinName]; + var skin = new spine.Skin(skinName); + for (var slotName in skinMap) { + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + var slotMap = skinMap[slotName]; + for (var entryName in slotMap) { + var attachment = this.readAttachment(slotMap[entryName], skin, slotIndex, entryName, skeletonData); + if (attachment != null) + skin.addAttachment(slotIndex, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { + var linkedMesh = this.linkedMeshes[i]; + var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent_3 == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.setParentMesh(parent_3); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + if (root.events) { + for (var eventName in root.events) { + var eventMap = root.events[eventName]; + var data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", ""); + skeletonData.events.push(data); + } + } + if (root.animations) { + for (var animationName in root.animations) { + var animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + }; + SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { + var scale = this.scale; + name = this.getValue(map, "name", name); + var type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + var path = this.getValue(map, "path", name); + var region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + var color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + var color = this.getValue(map, "color", null); + if (color != null) + box.color.setFromString(color); + return box; + } + case "mesh": + case "linkedmesh": { + var path = this.getValue(map, "path", name); + var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + var color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + var parent_4 = this.getValue(map, "parent", null); + if (parent_4 != null) { + mesh.inheritDeform = this.getValue(map, "deform", true); + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_4)); + return mesh; + } + var uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + var path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + var vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + var lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (var i = 0; i < map.lengths.length; i++) + lengths[i] = map.lengths[i] * scale; + path.lengths = lengths; + var color = this.getValue(map, "color", null); + if (color != null) + path.color.setFromString(color); + return path; + } + case "point": { + var point = this.attachmentLoader.newPointAttachment(skin, name); + if (point == null) + return null; + point.x = this.getValue(map, "x", 0) * scale; + point.y = this.getValue(map, "y", 0) * scale; + point.rotation = this.getValue(map, "rotation", 0); + var color = this.getValue(map, "color", null); + if (color != null) + point.color.setFromString(color); + return point; + } + case "clipping": { + var clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (clip == null) + return null; + var end = this.getValue(map, "end", null); + if (end != null) { + var slot = skeletonData.findSlot(end); + if (slot == null) + throw new Error("Clipping end slot not found: " + end); + clip.endSlot = slot; + } + var vertexCount = map.vertexCount; + this.readVertices(map, clip, vertexCount << 1); + var color = this.getValue(map, "color", null); + if (color != null) + clip.color.setFromString(color); + return clip; + } + } + return null; + }; + SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { + var scale = this.scale; + attachment.worldVerticesLength = verticesLength; + var vertices = map.vertices; + if (verticesLength == vertices.length) { + var scaledVertices = spine.Utils.toFloatArray(vertices); + if (scale != 1) { + for (var i = 0, n = vertices.length; i < n; i++) + scaledVertices[i] *= scale; + } + attachment.vertices = scaledVertices; + return; + } + var weights = new Array(); + var bones = new Array(); + for (var i = 0, n = vertices.length; i < n;) { + var boneCount = vertices[i++]; + bones.push(boneCount); + for (var nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + }; + SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { + var scale = this.scale; + var timelines = new Array(); + var duration = 0; + if (map.slots) { + for (var slotName in map.slots) { + var slotMap = map.slots[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + if (timelineName == "attachment") { + var timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, valueMap.time, valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else if (timelineName == "color") { + var timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, valueMap.time, color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName == "twoColor") { + var timeline = new spine.TwoColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var light = new spine.Color(); + var dark = new spine.Color(); + light.setFromString(valueMap.light); + dark.setFromString(valueMap.dark); + timeline.setFrame(frameIndex, valueMap.time, light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TwoColorTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + if (map.bones) { + for (var boneName in map.bones) { + var boneMap = map.bones[boneName]; + var boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (var timelineName in boneMap) { + var timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + var timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, valueMap.angle); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "scale") + timeline = new spine.ScaleTimeline(timelineMap.length); + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + var x = this.getValue(valueMap, "x", 0), y = this.getValue(valueMap, "y", 0); + timeline.setFrame(frameIndex, valueMap.time, x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + if (map.ik) { + for (var constraintName in map.ik) { + var constraintMap = map.ik[constraintName]; + var constraint = skeletonData.findIkConstraint(constraintName); + var timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "bendPositive", true) ? 1 : -1); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + if (map.transform) { + for (var constraintName in map.transform) { + var constraintMap = map.transform[constraintName]; + var constraint = skeletonData.findTransformConstraint(constraintName); + var timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + var frameIndex = 0; + for (var i = 0; i < constraintMap.length; i++) { + var valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + if (map.paths) { + for (var constraintName in map.paths) { + var constraintMap = map.paths[constraintName]; + var index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + var data = skeletonData.pathConstraints[index]; + for (var timelineName in constraintMap) { + var timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + var timeline = null; + var timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + var frameIndex = 0; + for (var i = 0; i < timelineMap.length; i++) { + var valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, valueMap.time, this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + if (map.deform) { + for (var deformName in map.deform) { + var deformMap = map.deform[deformName]; + var skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (var slotName in deformMap) { + var slotMap = deformMap[slotName]; + var slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (var timelineName in slotMap) { + var timelineMap = slotMap[timelineName]; + var attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + var weighted = attachment.bones != null; + var vertices = attachment.vertices; + var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + var timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + var frameIndex = 0; + for (var j = 0; j < timelineMap.length; j++) { + var valueMap = timelineMap[j]; + var deform = void 0; + var verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + var start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (var i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (var i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, valueMap.time, deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + var drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + var slotCount = skeletonData.slots.length; + var frameIndex = 0; + for (var j = 0; j < drawOrderNode.length; j++) { + var drawOrderMap = drawOrderNode[j]; + var drawOrder = null; + var offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + var originalIndex = 0, unchangedIndex = 0; + for (var i = 0; i < offsets.length; i++) { + var offsetMap = offsets[i]; + var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + for (var i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, drawOrderMap.time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (map.events) { + var timeline = new spine.EventTimeline(map.events.length); + var frameIndex = 0; + for (var i = 0; i < map.events.length; i++) { + var eventMap = map.events[i]; + var eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + var event_5 = new spine.Event(spine.Utils.toSinglePrecision(eventMap.time), eventData); + event_5.intValue = this.getValue(eventMap, "int", eventData.intValue); + event_5.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event_5.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + timeline.setFrame(frameIndex++, event_5); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + }; + SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { + if (!map.curve) + return; + if (map.curve === "stepped") + timeline.setStepped(frameIndex); + else if (Object.prototype.toString.call(map.curve) === '[object Array]') { + var curve = map.curve; + timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + } + }; + SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + }; + SkeletonJson.blendModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error("Unknown blend mode: " + str); + }; + SkeletonJson.positionModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.spacingModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error("Unknown position mode: " + str); + }; + SkeletonJson.rotateModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error("Unknown rotate mode: " + str); + }; + SkeletonJson.transformModeFromString = function (str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.TransformMode.Normal; + if (str == "onlytranslation") + return spine.TransformMode.OnlyTranslation; + if (str == "norotationorreflection") + return spine.TransformMode.NoRotationOrReflection; + if (str == "noscale") + return spine.TransformMode.NoScale; + if (str == "noscaleorreflection") + return spine.TransformMode.NoScaleOrReflection; + throw new Error("Unknown transform mode: " + str); + }; + return SkeletonJson; + }()); + spine.SkeletonJson = SkeletonJson; + var LinkedMesh = (function () { + function LinkedMesh(mesh, skin, slotIndex, parent) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + } + return LinkedMesh; + }()); })(spine || (spine = {})); var spine; (function (spine) { - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - if (name == null) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.addAttachment = function (slotIndex, name, attachment) { - if (attachment == null) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment != null) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; + var Skin = (function () { + function Skin(name) { + this.attachments = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + Skin.prototype.addAttachment = function (slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + var attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + }; + Skin.prototype.getAttachment = function (slotIndex, name) { + var dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + }; + Skin.prototype.attachAll = function (skeleton, oldSkin) { + var slotIndex = 0; + for (var i = 0; i < skeleton.slots.length; i++) { + var slot = skeleton.slots[i]; + var slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + var dictionary = oldSkin.attachments[slotIndex]; + for (var key in dictionary) { + var skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + var attachment = this.getAttachment(slotIndex, key); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + }; + return Skin; + }()); + spine.Skin = Skin; })(spine || (spine = {})); var spine; (function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.attachmentVertices = new Array(); - if (data == null) - throw new Error("data cannot be null."); - if (bone == null) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = data.darkColor == null ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - this.attachmentVertices.length = 0; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor != null) - this.darkColor.setFromColor(this.data.darkColor); - if (this.data.attachmentName == null) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; + var Slot = (function () { + function Slot(data, bone) { + this.attachmentVertices = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.darkColor = data.darkColor == null ? null : new spine.Color(); + this.setToSetupPose(); + } + Slot.prototype.getAttachment = function () { + return this.attachment; + }; + Slot.prototype.setAttachment = function (attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.attachmentVertices.length = 0; + }; + Slot.prototype.setAttachmentTime = function (time) { + this.attachmentTime = this.bone.skeleton.time - time; + }; + Slot.prototype.getAttachmentTime = function () { + return this.bone.skeleton.time - this.attachmentTime; + }; + Slot.prototype.setToSetupPose = function () { + this.color.setFromColor(this.data.color); + if (this.darkColor != null) + this.darkColor.setFromColor(this.data.darkColor); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + }; + return Slot; + }()); + spine.Slot = Slot; })(spine || (spine = {})); var spine; (function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (name == null) - throw new Error("name cannot be null."); - if (boneData == null) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; + var SlotData = (function () { + function SlotData(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + return SlotData; + }()); + spine.SlotData = SlotData; })(spine || (spine = {})); var spine; (function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - Texture.filterFromString = function (text) { - switch (text.toLowerCase()) { - case "nearest": return TextureFilter.Nearest; - case "linear": return TextureFilter.Linear; - case "mipmap": return TextureFilter.MipMap; - case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; - case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; - case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; - case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; - default: throw new Error("Unknown texture filter " + text); - } - }; - Texture.wrapFromString = function (text) { - switch (text.toLowerCase()) { - case "mirroredtepeat": return TextureWrap.MirroredRepeat; - case "clamptoedge": return TextureWrap.ClampToEdge; - case "repeat": return TextureWrap.Repeat; - default: throw new Error("Unknown texture wrap " + text); - } - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.rotate = false; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; + var Texture = (function () { + function Texture(image) { + this._image = image; + } + Texture.prototype.getImage = function () { + return this._image; + }; + Texture.filterFromString = function (text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error("Unknown texture filter " + text); + } + }; + Texture.wrapFromString = function (text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error("Unknown texture wrap " + text); + } + }; + return Texture; + }()); + spine.Texture = Texture; + var TextureFilter; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); + var TextureWrap; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; + })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); + var TextureRegion = (function () { + function TextureRegion() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + return TextureRegion; + }()); + spine.TextureRegion = TextureRegion; })(spine || (spine = {})); var spine; (function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText, textureLoader) { - this.pages = new Array(); - this.regions = new Array(); - this.load(atlasText, textureLoader); - } - TextureAtlas.prototype.load = function (atlasText, textureLoader) { - if (textureLoader == null) - throw new Error("textureLoader cannot be null."); - var reader = new TextureAtlasReader(atlasText); - var tuple = new Array(4); - var page = null; - while (true) { - var line = reader.readLine(); - if (line == null) - break; - line = line.trim(); - if (line.length == 0) - page = null; - else if (!page) { - page = new TextureAtlasPage(); - page.name = line; - if (reader.readTuple(tuple) == 2) { - page.width = parseInt(tuple[0]); - page.height = parseInt(tuple[1]); - reader.readTuple(tuple); - } - reader.readTuple(tuple); - page.minFilter = spine.Texture.filterFromString(tuple[0]); - page.magFilter = spine.Texture.filterFromString(tuple[1]); - var direction = reader.readValue(); - page.uWrap = spine.TextureWrap.ClampToEdge; - page.vWrap = spine.TextureWrap.ClampToEdge; - if (direction == "x") - page.uWrap = spine.TextureWrap.Repeat; - else if (direction == "y") - page.vWrap = spine.TextureWrap.Repeat; - else if (direction == "xy") - page.uWrap = page.vWrap = spine.TextureWrap.Repeat; - page.texture = textureLoader(line); - page.texture.setFilters(page.minFilter, page.magFilter); - page.texture.setWraps(page.uWrap, page.vWrap); - page.width = page.texture.getImage().width; - page.height = page.texture.getImage().height; - this.pages.push(page); - } - else { - var region = new TextureAtlasRegion(); - region.name = line; - region.page = page; - region.rotate = reader.readValue() == "true"; - reader.readTuple(tuple); - var x = parseInt(tuple[0]); - var y = parseInt(tuple[1]); - reader.readTuple(tuple); - var width = parseInt(tuple[0]); - var height = parseInt(tuple[1]); - region.u = x / page.width; - region.v = y / page.height; - if (region.rotate) { - region.u2 = (x + height) / page.width; - region.v2 = (y + width) / page.height; - } - else { - region.u2 = (x + width) / page.width; - region.v2 = (y + height) / page.height; - } - region.x = x; - region.y = y; - region.width = Math.abs(width); - region.height = Math.abs(height); - if (reader.readTuple(tuple) == 4) { - if (reader.readTuple(tuple) == 4) { - reader.readTuple(tuple); - } - } - region.originalWidth = parseInt(tuple[0]); - region.originalHeight = parseInt(tuple[1]); - reader.readTuple(tuple); - region.offsetX = parseInt(tuple[0]); - region.offsetY = parseInt(tuple[1]); - region.index = parseInt(reader.readValue()); - region.texture = page.texture; - this.regions.push(region); - } - } - }; - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readValue = function () { - var line = this.readLine(); - var colon = line.indexOf(":"); - if (colon == -1) - throw new Error("Invalid line: " + line); - return line.substring(colon + 1).trim(); - }; - TextureAtlasReader.prototype.readTuple = function (tuple) { - var line = this.readLine(); - var colon = line.indexOf(":"); - if (colon == -1) - throw new Error("Invalid line: " + line); - var i = 0, lastMatch = colon + 1; - for (; i < 3; i++) { - var comma = line.indexOf(",", lastMatch); - if (comma == -1) - break; - tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - } - tuple[i] = line.substring(lastMatch).trim(); - return i + 1; - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - } - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; + var TextureAtlas = (function () { + function TextureAtlas(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + TextureAtlas.prototype.load = function (atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + var reader = new TextureAtlasReader(atlasText); + var tuple = new Array(4); + var page = null; + while (true) { + var line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + reader.readTuple(tuple); + page.minFilter = spine.Texture.filterFromString(tuple[0]); + page.magFilter = spine.Texture.filterFromString(tuple[1]); + var direction = reader.readValue(); + page.uWrap = spine.TextureWrap.ClampToEdge; + page.vWrap = spine.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = spine.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = spine.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = spine.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + page.width = page.texture.getImage().width; + page.height = page.texture.getImage().height; + this.pages.push(page); + } + else { + var region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + region.rotate = reader.readValue() == "true"; + reader.readTuple(tuple); + var x = parseInt(tuple[0]); + var y = parseInt(tuple[1]); + reader.readTuple(tuple); + var width = parseInt(tuple[0]); + var height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + if (reader.readTuple(tuple) == 4) { + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + }; + TextureAtlas.prototype.findRegion = function (name) { + for (var i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + }; + TextureAtlas.prototype.dispose = function () { + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + }; + return TextureAtlas; + }()); + spine.TextureAtlas = TextureAtlas; + var TextureAtlasReader = (function () { + function TextureAtlasReader(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + TextureAtlasReader.prototype.readLine = function () { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + }; + TextureAtlasReader.prototype.readValue = function () { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + }; + TextureAtlasReader.prototype.readTuple = function (tuple) { + var line = this.readLine(); + var colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + var i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + var comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + }; + return TextureAtlasReader; + }()); + var TextureAtlasPage = (function () { + function TextureAtlasPage() { + } + return TextureAtlasPage; + }()); + spine.TextureAtlasPage = TextureAtlasPage; + var TextureAtlasRegion = (function (_super) { + __extends(TextureAtlasRegion, _super); + function TextureAtlasRegion() { + return _super !== null && _super.apply(this, arguments) || this; + } + return TextureAtlasRegion; + }(spine.TextureRegion)); + spine.TextureAtlasRegion = TextureAtlasRegion; })(spine || (spine = {})); var spine; (function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.rotateMix = 0; - this.translateMix = 0; - this.scaleMix = 0; - this.shearMix = 0; - this.temp = new spine.Vector2(); - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.rotateMix = data.rotateMix; - this.translateMix = data.translateMix; - this.scaleMix = data.scaleMix; - this.shearMix = data.shearMix; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.apply = function () { - this.update(); - }; - TransformConstraint.prototype.update = function () { - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var modified = false; - if (rotateMix != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - modified = true; - } - if (translateMix != 0) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * translateMix; - bone.worldY += (temp.y - bone.worldY) * translateMix; - modified = true; - } - if (scaleMix > 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - var ts = Math.sqrt(ta * ta + tc * tc); - if (s > 0.00001) - s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s; - bone.a *= s; - bone.c *= s; - s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - ts = Math.sqrt(tb * tb + td * td); - if (s > 0.00001) - s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s; - bone.b *= s; - bone.d *= s; - modified = true; - } - if (shearMix > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * shearMix; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - modified = true; - } - if (modified) - bone.appliedValid = false; - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var modified = false; - if (rotateMix != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - modified = true; - } - if (translateMix != 0) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * translateMix; - bone.worldY += temp.y * translateMix; - modified = true; - } - if (scaleMix > 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1; - bone.a *= s; - bone.c *= s; - s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1; - bone.b *= s; - bone.d *= s; - modified = true; - } - if (shearMix > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * shearMix; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - modified = true; - } - if (modified) - bone.appliedValid = false; - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - if (!target.appliedValid) - target.updateAppliedTransform(); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var rotation = bone.arotation; - if (rotateMix != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * rotateMix; - } - var x = bone.ax, y = bone.ay; - if (translateMix != 0) { - x += (target.ax - x + this.data.offsetX) * translateMix; - y += (target.ay - y + this.data.offsetY) * translateMix; - } - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (scaleMix > 0) { - if (scaleX > 0.00001) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX; - if (scaleY > 0.00001) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY; - } - var shearY = bone.ashearY; - if (shearMix > 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - bone.shearY += r * shearMix; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - if (!target.appliedValid) - target.updateAppliedTransform(); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var rotation = bone.arotation; - if (rotateMix != 0) - rotation += (target.arotation + this.data.offsetRotation) * rotateMix; - var x = bone.ax, y = bone.ay; - if (translateMix != 0) { - x += (target.ax + this.data.offsetX) * translateMix; - y += (target.ay + this.data.offsetY) * translateMix; - } - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (scaleMix > 0) { - if (scaleX > 0.00001) - scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1; - if (scaleY > 0.00001) - scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1; - } - var shearY = bone.ashearY; - if (shearMix > 0) - shearY += (target.ashearY + this.data.offsetShearY) * shearMix; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.getOrder = function () { - return this.data.order; - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; + var TransformConstraint = (function () { + function TransformConstraint(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (var i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + TransformConstraint.prototype.apply = function () { + this.update(); + }; + TransformConstraint.prototype.update = function () { + if (this.data.local) { + if (this.data.relative) + this.applyRelativeLocal(); + else + this.applyAbsoluteLocal(); + } + else { + if (this.data.relative) + this.applyRelativeWorld(); + else + this.applyAbsoluteWorld(); + } + }; + TransformConstraint.prototype.applyAbsoluteWorld = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect; + var offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var modified = false; + if (rotateMix != 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (translateMix != 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + modified = true; + } + if (scaleMix > 0) { + var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + var ts = Math.sqrt(ta * ta + tc * tc); + if (s > 0.00001) + s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s; + bone.a *= s; + bone.c *= s; + s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + if (s > 0.00001) + s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s; + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + var b = bone.b, d = bone.d; + var by = Math.atan2(d, b); + var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + offsetShearY) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + if (modified) + bone.appliedValid = false; + } + }; + TransformConstraint.prototype.applyRelativeWorld = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + var ta = target.a, tb = target.b, tc = target.c, td = target.d; + var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + var modified = false; + if (rotateMix != 0) { + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var r = Math.atan2(tc, ta) + offsetRotation; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + var cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (translateMix != 0) { + var temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += temp.x * translateMix; + bone.worldY += temp.y * translateMix; + modified = true; + } + if (scaleMix > 0) { + var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1; + bone.a *= s; + bone.c *= s; + s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1; + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + var r = Math.atan2(td, tb) - Math.atan2(tc, ta); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + var b = bone.b, d = bone.d; + r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * shearMix; + var s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + if (modified) + bone.appliedValid = false; + } + }; + TransformConstraint.prototype.applyAbsoluteLocal = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + if (!target.appliedValid) + target.updateAppliedTransform(); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (!bone.appliedValid) + bone.updateAppliedTransform(); + var rotation = bone.arotation; + if (rotateMix != 0) { + var r = target.arotation - rotation + this.data.offsetRotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + rotation += r * rotateMix; + } + var x = bone.ax, y = bone.ay; + if (translateMix != 0) { + x += (target.ax - x + this.data.offsetX) * translateMix; + y += (target.ay - y + this.data.offsetY) * translateMix; + } + var scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (scaleMix > 0) { + if (scaleX > 0.00001) + scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX; + if (scaleY > 0.00001) + scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY; + } + var shearY = bone.ashearY; + if (shearMix > 0) { + var r = target.ashearY - shearY + this.data.offsetShearY; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + bone.shearY += r * shearMix; + } + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + TransformConstraint.prototype.applyRelativeLocal = function () { + var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + var target = this.target; + if (!target.appliedValid) + target.updateAppliedTransform(); + var bones = this.bones; + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (!bone.appliedValid) + bone.updateAppliedTransform(); + var rotation = bone.arotation; + if (rotateMix != 0) + rotation += (target.arotation + this.data.offsetRotation) * rotateMix; + var x = bone.ax, y = bone.ay; + if (translateMix != 0) { + x += (target.ax + this.data.offsetX) * translateMix; + y += (target.ay + this.data.offsetY) * translateMix; + } + var scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (scaleMix > 0) { + if (scaleX > 0.00001) + scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1; + if (scaleY > 0.00001) + scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1; + } + var shearY = bone.ashearY; + if (shearMix > 0) + shearY += (target.ashearY + this.data.offsetShearY) * shearMix; + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + }; + TransformConstraint.prototype.getOrder = function () { + return this.data.order; + }; + return TransformConstraint; + }()); + spine.TransformConstraint = TransformConstraint; })(spine || (spine = {})); var spine; (function (spine) { - var TransformConstraintData = (function () { - function TransformConstraintData(name) { - this.order = 0; - this.bones = new Array(); - this.rotateMix = 0; - this.translateMix = 0; - this.scaleMix = 0; - this.shearMix = 0; - this.offsetRotation = 0; - this.offsetX = 0; - this.offsetY = 0; - this.offsetScaleX = 0; - this.offsetScaleY = 0; - this.offsetShearY = 0; - this.relative = false; - this.local = false; - if (name == null) - throw new Error("name cannot be null."); - this.name = name; - } - return TransformConstraintData; - }()); - spine.TransformConstraintData = TransformConstraintData; + var TransformConstraintData = (function () { + function TransformConstraintData(name) { + this.order = 0; + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + this.relative = false; + this.local = false; + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return TransformConstraintData; + }()); + spine.TransformConstraintData = TransformConstraintData; })(spine || (spine = {})); var spine; (function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; + var Triangulator = (function () { + function Triangulator() { + this.convexPolygons = new Array(); + this.convexPolygonsIndices = new Array(); + this.indicesArray = new Array(); + this.isConcaveArray = new Array(); + this.triangles = new Array(); + this.polygonPool = new spine.Pool(function () { + return new Array(); + }); + this.polygonIndicesPool = new spine.Pool(function () { + return new Array(); + }); + } + Triangulator.prototype.triangulate = function (verticesArray) { + var vertices = verticesArray; + var vertexCount = verticesArray.length >> 1; + var indices = this.indicesArray; + indices.length = 0; + for (var i = 0; i < vertexCount; i++) + indices[i] = i; + var isConcave = this.isConcaveArray; + isConcave.length = 0; + for (var i = 0, n = vertexCount; i < n; ++i) + isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); + var triangles = this.triangles; + triangles.length = 0; + while (vertexCount > 3) { + var previous = vertexCount - 1, i = 0, next = 1; + while (true) { + outer: if (!isConcave[i]) { + var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; + var p1x = vertices[p1], p1y = vertices[p1 + 1]; + var p2x = vertices[p2], p2y = vertices[p2 + 1]; + var p3x = vertices[p3], p3y = vertices[p3 + 1]; + for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { + if (!isConcave[ii]) + continue; + var v = indices[ii] << 1; + var vx = vertices[v], vy = vertices[v + 1]; + if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { + if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { + if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) + break outer; + } + } + } + break; + } + if (next == 0) { + do { + if (!isConcave[i]) + break; + i--; + } while (i > 0); + break; + } + previous = i; + i = next; + next = (next + 1) % vertexCount; + } + triangles.push(indices[(vertexCount + i - 1) % vertexCount]); + triangles.push(indices[i]); + triangles.push(indices[(i + 1) % vertexCount]); + indices.splice(i, 1); + isConcave.splice(i, 1); + vertexCount--; + var previousIndex = (vertexCount + i - 1) % vertexCount; + var nextIndex = i == vertexCount ? 0 : i; + isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); + isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); + } + if (vertexCount == 3) { + triangles.push(indices[2]); + triangles.push(indices[0]); + triangles.push(indices[1]); + } + return triangles; + }; + Triangulator.prototype.decompose = function (verticesArray, triangles) { + var vertices = verticesArray; + var convexPolygons = this.convexPolygons; + this.polygonPool.freeAll(convexPolygons); + convexPolygons.length = 0; + var convexPolygonsIndices = this.convexPolygonsIndices; + this.polygonIndicesPool.freeAll(convexPolygonsIndices); + convexPolygonsIndices.length = 0; + var polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + var polygon = this.polygonPool.obtain(); + polygon.length = 0; + var fanBaseIndex = -1, lastWinding = 0; + for (var i = 0, n = triangles.length; i < n; i += 3) { + var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; + var x1 = vertices[t1], y1 = vertices[t1 + 1]; + var x2 = vertices[t2], y2 = vertices[t2 + 1]; + var x3 = vertices[t3], y3 = vertices[t3 + 1]; + var merged = false; + if (fanBaseIndex == t1) { + var o = polygon.length - 4; + var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); + var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); + if (winding1 == lastWinding && winding2 == lastWinding) { + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(t3); + merged = true; + } + } + if (!merged) { + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + else { + this.polygonPool.free(polygon); + this.polygonIndicesPool.free(polygonIndices); + } + polygon = this.polygonPool.obtain(); + polygon.length = 0; + polygon.push(x1); + polygon.push(y1); + polygon.push(x2); + polygon.push(y2); + polygon.push(x3); + polygon.push(y3); + polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + polygonIndices.push(t1); + polygonIndices.push(t2); + polygonIndices.push(t3); + lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); + fanBaseIndex = t1; + } + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + for (var i = 0, n = convexPolygons.length; i < n; i++) { + polygonIndices = convexPolygonsIndices[i]; + if (polygonIndices.length == 0) + continue; + var firstIndex = polygonIndices[0]; + var lastIndex = polygonIndices[polygonIndices.length - 1]; + polygon = convexPolygons[i]; + var o = polygon.length - 4; + var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; + var prevX = polygon[o + 2], prevY = polygon[o + 3]; + var firstX = polygon[0], firstY = polygon[1]; + var secondX = polygon[2], secondY = polygon[3]; + var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); + for (var ii = 0; ii < n; ii++) { + if (ii == i) + continue; + var otherIndices = convexPolygonsIndices[ii]; + if (otherIndices.length != 3) + continue; + var otherFirstIndex = otherIndices[0]; + var otherSecondIndex = otherIndices[1]; + var otherLastIndex = otherIndices[2]; + var otherPoly = convexPolygons[ii]; + var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; + if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) + continue; + var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); + var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); + if (winding1 == winding && winding2 == winding) { + otherPoly.length = 0; + otherIndices.length = 0; + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(otherLastIndex); + prevPrevX = prevX; + prevPrevY = prevY; + prevX = x3; + prevY = y3; + ii = 0; + } + } + } + for (var i = convexPolygons.length - 1; i >= 0; i--) { + polygon = convexPolygons[i]; + if (polygon.length == 0) { + convexPolygons.splice(i, 1); + this.polygonPool.free(polygon); + polygonIndices = convexPolygonsIndices[i]; + convexPolygonsIndices.splice(i, 1); + this.polygonIndicesPool.free(polygonIndices); + } + } + return convexPolygons; + }; + Triangulator.isConcave = function (index, vertexCount, vertices, indices) { + var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; + var current = indices[index] << 1; + var next = indices[(index + 1) % vertexCount] << 1; + return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); + }; + Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; + }; + Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { + var px = p2x - p1x, py = p2y - p1y; + return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; + }; + return Triangulator; + }()); + spine.Triangulator = Triangulator; })(spine || (spine = {})); var spine; (function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - this.clamp(); - return this; - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255.0; - this.g = parseInt(hex.substr(2, 2), 16) / 255.0; - this.b = parseInt(hex.substr(4, 2), 16) / 255.0; - this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - this.clamp(); - return this; - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - return Color; - }()); - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - return MathUtils; - }()); - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) { - return new Float32Array(size); - } - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) { - return new Int16Array(size); - } - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - return Utils; - }()); - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) { - if (items[i].reset) - items[i].reset(); - this.items[i] = items[i]; - } - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) { - mean += this.values[i]; - } - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - else { - return 0; - } - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; + var IntSet = (function () { + function IntSet() { + this.array = new Array(); + } + IntSet.prototype.add = function (value) { + var contains = this.contains(value); + this.array[value | 0] = value | 0; + return !contains; + }; + IntSet.prototype.contains = function (value) { + return this.array[value | 0] != undefined; + }; + IntSet.prototype.remove = function (value) { + this.array[value | 0] = undefined; + }; + IntSet.prototype.clear = function () { + this.array.length = 0; + }; + return IntSet; + }()); + spine.IntSet = IntSet; + var Color = (function () { + function Color(r, g, b, a) { + if (r === void 0) { r = 0; } + if (g === void 0) { g = 0; } + if (b === void 0) { b = 0; } + if (a === void 0) { a = 0; } + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + Color.prototype.set = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + return this; + }; + Color.prototype.setFromColor = function (c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + return this; + }; + Color.prototype.setFromString = function (hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + return this; + }; + Color.prototype.add = function (r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + return this; + }; + Color.prototype.clamp = function () { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + }; + return Color; + }()); + Color.WHITE = new Color(1, 1, 1, 1); + Color.RED = new Color(1, 0, 0, 1); + Color.GREEN = new Color(0, 1, 0, 1); + Color.BLUE = new Color(0, 0, 1, 1); + Color.MAGENTA = new Color(1, 0, 1, 1); + spine.Color = Color; + var MathUtils = (function () { + function MathUtils() { + } + MathUtils.clamp = function (value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + }; + MathUtils.cosDeg = function (degrees) { + return Math.cos(degrees * MathUtils.degRad); + }; + MathUtils.sinDeg = function (degrees) { + return Math.sin(degrees * MathUtils.degRad); + }; + MathUtils.signum = function (value) { + return value > 0 ? 1 : value < 0 ? -1 : 0; + }; + MathUtils.toInt = function (x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + }; + MathUtils.cbrt = function (x) { + var y = Math.pow(Math.abs(x), 1 / 3); + return x < 0 ? -y : y; + }; + MathUtils.randomTriangular = function (min, max) { + return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); + }; + MathUtils.randomTriangularWith = function (min, max, mode) { + var u = Math.random(); + var d = max - min; + if (u <= (mode - min) / d) + return min + Math.sqrt(u * d * (mode - min)); + return max - Math.sqrt((1 - u) * d * (max - mode)); + }; + return MathUtils; + }()); + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + spine.MathUtils = MathUtils; + var Interpolation = (function () { + function Interpolation() { + } + Interpolation.prototype.apply = function (start, end, a) { + return start + (end - start) * this.applyInternal(a); + }; + return Interpolation; + }()); + spine.Interpolation = Interpolation; + var Pow = (function (_super) { + __extends(Pow, _super); + function Pow(power) { + var _this = _super.call(this) || this; + _this.power = 2; + _this.power = power; + return _this; + } + Pow.prototype.applyInternal = function (a) { + if (a <= 0.5) + return Math.pow(a * 2, this.power) / 2; + return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; + }; + return Pow; + }(Interpolation)); + spine.Pow = Pow; + var PowOut = (function (_super) { + __extends(PowOut, _super); + function PowOut(power) { + return _super.call(this, power) || this; + } + PowOut.prototype.applyInternal = function (a) { + return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; + }; + return PowOut; + }(Pow)); + spine.PowOut = PowOut; + var Utils = (function () { + function Utils() { + } + Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { + for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + }; + Utils.setArraySize = function (array, size, value) { + if (value === void 0) { value = 0; } + var oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (var i = oldSize; i < size; i++) + array[i] = value; + } + return array; + }; + Utils.ensureArrayCapacity = function (array, size, value) { + if (value === void 0) { value = 0; } + if (array.length >= size) + return array; + return Utils.setArraySize(array, size, value); + }; + Utils.newArray = function (size, defaultValue) { + var array = new Array(size); + for (var i = 0; i < size; i++) + array[i] = defaultValue; + return array; + }; + Utils.newFloatArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.newShortArray = function (size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Int16Array(size); + } + else { + var array = new Array(size); + for (var i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + }; + Utils.toFloatArray = function (array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + }; + Utils.toSinglePrecision = function (value) { + return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; + }; + return Utils; + }()); + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + spine.Utils = Utils; + var DebugUtils = (function () { + function DebugUtils() { + } + DebugUtils.logBones = function (skeleton) { + for (var i = 0; i < skeleton.bones.length; i++) { + var bone = skeleton.bones[i]; + console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); + } + }; + return DebugUtils; + }()); + spine.DebugUtils = DebugUtils; + var Pool = (function () { + function Pool(instantiator) { + this.items = new Array(); + this.instantiator = instantiator; + } + Pool.prototype.obtain = function () { + return this.items.length > 0 ? this.items.pop() : this.instantiator(); + }; + Pool.prototype.free = function (item) { + if (item.reset) + item.reset(); + this.items.push(item); + }; + Pool.prototype.freeAll = function (items) { + for (var i = 0; i < items.length; i++) { + if (items[i].reset) + items[i].reset(); + this.items[i] = items[i]; + } + }; + Pool.prototype.clear = function () { + this.items.length = 0; + }; + return Pool; + }()); + spine.Pool = Pool; + var Vector2 = (function () { + function Vector2(x, y) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + this.x = x; + this.y = y; + } + Vector2.prototype.set = function (x, y) { + this.x = x; + this.y = y; + return this; + }; + Vector2.prototype.length = function () { + var x = this.x; + var y = this.y; + return Math.sqrt(x * x + y * y); + }; + Vector2.prototype.normalize = function () { + var len = this.length(); + if (len != 0) { + this.x /= len; + this.y /= len; + } + return this; + }; + return Vector2; + }()); + spine.Vector2 = Vector2; + var TimeKeeper = (function () { + function TimeKeeper() { + this.maxDelta = 0.064; + this.framesPerSecond = 0; + this.delta = 0; + this.totalTime = 0; + this.lastTime = Date.now() / 1000; + this.frameCount = 0; + this.frameTime = 0; + } + TimeKeeper.prototype.update = function () { + var now = Date.now() / 1000; + this.delta = now - this.lastTime; + this.frameTime += this.delta; + this.totalTime += this.delta; + if (this.delta > this.maxDelta) + this.delta = this.maxDelta; + this.lastTime = now; + this.frameCount++; + if (this.frameTime > 1) { + this.framesPerSecond = this.frameCount / this.frameTime; + this.frameTime = 0; + this.frameCount = 0; + } + }; + return TimeKeeper; + }()); + spine.TimeKeeper = TimeKeeper; + var WindowedMean = (function () { + function WindowedMean(windowSize) { + if (windowSize === void 0) { windowSize = 32; } + this.addedValues = 0; + this.lastValue = 0; + this.mean = 0; + this.dirty = true; + this.values = new Array(windowSize); + } + WindowedMean.prototype.hasEnoughData = function () { + return this.addedValues >= this.values.length; + }; + WindowedMean.prototype.addValue = function (value) { + if (this.addedValues < this.values.length) + this.addedValues++; + this.values[this.lastValue++] = value; + if (this.lastValue > this.values.length - 1) + this.lastValue = 0; + this.dirty = true; + }; + WindowedMean.prototype.getMean = function () { + if (this.hasEnoughData()) { + if (this.dirty) { + var mean = 0; + for (var i = 0; i < this.values.length; i++) { + mean += this.values[i]; + } + this.mean = mean / this.values.length; + this.dirty = false; + } + return this.mean; + } + else { + return 0; + } + }; + return WindowedMean; + }()); + spine.WindowedMean = WindowedMean; })(spine || (spine = {})); var spine; (function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (name == null) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = (VertexAttachment.nextID++ & 65535) << 11; - _this.worldVerticesLength = 0; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.attachmentVertices; - var vertices = this.vertices; - var bones = this.bones; - if (bones == null) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.applyDeform = function (sourceAttachment) { - return this == sourceAttachment; - }; - return VertexAttachment; - }(Attachment)); - VertexAttachment.nextID = 0; - spine.VertexAttachment = VertexAttachment; + var Attachment = (function () { + function Attachment(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + return Attachment; + }()); + spine.Attachment = Attachment; + var VertexAttachment = (function (_super) { + __extends(VertexAttachment, _super); + function VertexAttachment(name) { + var _this = _super.call(this, name) || this; + _this.id = (VertexAttachment.nextID++ & 65535) << 11; + _this.worldVerticesLength = 0; + return _this; + } + VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { + count = offset + (count >> 1) * stride; + var skeleton = slot.bone.skeleton; + var deformArray = slot.attachmentVertices; + var vertices = this.vertices; + var bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + var bone = slot.bone; + var x = bone.worldX; + var y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { + var vx = vertices[v_1], vy = vertices[v_1 + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + var v = 0, skip = 0; + for (var i = 0; i < start; i += 2) { + var n = bones[v]; + v += n + 1; + skip += n; + } + var skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (var w = offset, b = skip * 3; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + var deform = deformArray; + for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { + var wx = 0, wy = 0; + var n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + var bone = skeletonBones[bones[v]]; + var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + }; + VertexAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment; + }; + return VertexAttachment; + }(Attachment)); + VertexAttachment.nextID = 0; + spine.VertexAttachment = VertexAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - })(AttachmentType = spine.AttachmentType || (spine.AttachmentType = {})); + var AttachmentType; + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + AttachmentType[AttachmentType["Point"] = 5] = "Point"; + })(AttachmentType = spine.AttachmentType || (spine.AttachmentType = {})); })(spine || (spine = {})); var spine; (function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; + var BoundingBoxAttachment = (function (_super) { + __extends(BoundingBoxAttachment, _super); + function BoundingBoxAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(1, 1, 1, 1); + return _this; + } + return BoundingBoxAttachment; + }(spine.VertexAttachment)); + spine.BoundingBoxAttachment = BoundingBoxAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; + var ClippingAttachment = (function (_super) { + __extends(ClippingAttachment, _super); + function ClippingAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); + return _this; + } + return ClippingAttachment; + }(spine.VertexAttachment)); + spine.ClippingAttachment = ClippingAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.inheritDeform = false; - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var u = 0, v = 0, width = 0, height = 0; - if (this.region == null) { - u = v = 0; - width = height = 1; - } - else { - u = this.region.u; - v = this.region.v; - width = this.region.u2 - u; - height = this.region.v2 - v; - } - var regionUVs = this.regionUVs; - if (this.uvs == null || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - if (this.region.rotate) { - for (var i = 0, n = uvs.length; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + height - regionUVs[i] * height; - } - } - else { - for (var i = 0, n = uvs.length; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - } - }; - MeshAttachment.prototype.applyDeform = function (sourceAttachment) { - return this == sourceAttachment || (this.inheritDeform && this.parentMesh == sourceAttachment); - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh != null) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; + var MeshAttachment = (function (_super) { + __extends(MeshAttachment, _super); + function MeshAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(1, 1, 1, 1); + _this.inheritDeform = false; + _this.tempColor = new spine.Color(0, 0, 0, 0); + return _this; + } + MeshAttachment.prototype.updateUVs = function () { + var u = 0, v = 0, width = 0, height = 0; + if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + u = this.region.u; + v = this.region.v; + width = this.region.u2 - u; + height = this.region.v2 - v; + } + var regionUVs = this.regionUVs; + if (this.uvs == null || this.uvs.length != regionUVs.length) + this.uvs = spine.Utils.newFloatArray(regionUVs.length); + var uvs = this.uvs; + if (this.region.rotate) { + for (var i = 0, n = uvs.length; i < n; i += 2) { + uvs[i] = u + regionUVs[i + 1] * width; + uvs[i + 1] = v + height - regionUVs[i] * height; + } + } + else { + for (var i = 0, n = uvs.length; i < n; i += 2) { + uvs[i] = u + regionUVs[i] * width; + uvs[i + 1] = v + regionUVs[i + 1] * height; + } + } + }; + MeshAttachment.prototype.applyDeform = function (sourceAttachment) { + return this == sourceAttachment || (this.inheritDeform && this.parentMesh == sourceAttachment); + }; + MeshAttachment.prototype.getParentMesh = function () { + return this.parentMesh; + }; + MeshAttachment.prototype.setParentMesh = function (parentMesh) { + this.parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.worldVerticesLength = parentMesh.worldVerticesLength; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + this.worldVerticesLength = parentMesh.worldVerticesLength; + } + }; + return MeshAttachment; + }(spine.VertexAttachment)); + spine.MeshAttachment = MeshAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; + var PathAttachment = (function (_super) { + __extends(PathAttachment, _super); + function PathAttachment(name) { + var _this = _super.call(this, name) || this; + _this.closed = false; + _this.constantSpeed = false; + _this.color = new spine.Color(1, 1, 1, 1); + return _this; + } + return PathAttachment; + }(spine.VertexAttachment)); + spine.PathAttachment = PathAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; + var PointAttachment = (function (_super) { + __extends(PointAttachment, _super); + function PointAttachment(name) { + var _this = _super.call(this, name) || this; + _this.color = new spine.Color(0.38, 0.94, 0, 1); + return _this; + } + PointAttachment.prototype.computeWorldPosition = function (bone, point) { + point.x = this.x * bone.a + this.y * bone.b + bone.worldX; + point.y = this.x * bone.c + this.y * bone.d + bone.worldY; + return point; + }; + PointAttachment.prototype.computeWorldRotation = function (bone) { + var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); + var x = cos * bone.a + sin * bone.b; + var y = cos * bone.c + sin * bone.d; + return Math.atan2(y, x) * spine.MathUtils.radDeg; + }; + return PointAttachment; + }(spine.VertexAttachment)); + spine.PointAttachment = PointAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var localXCos = localX * cos + this.x; - var localXSin = localX * sin; - var localYCos = localY * cos + this.y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + this.x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + this.y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[RegionAttachment.OX1] = localXCos - localYSin; - offset[RegionAttachment.OY1] = localYCos + localXSin; - offset[RegionAttachment.OX2] = localXCos - localY2Sin; - offset[RegionAttachment.OY2] = localY2Cos + localXSin; - offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; - offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; - offset[RegionAttachment.OX4] = localX2Cos - localYSin; - offset[RegionAttachment.OY4] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.rotate) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[RegionAttachment.OX1]; - offsetY = vertexOffset[RegionAttachment.OY1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX2]; - offsetY = vertexOffset[RegionAttachment.OY2]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX3]; - offsetY = vertexOffset[RegionAttachment.OY3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX4]; - offsetY = vertexOffset[RegionAttachment.OY4]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - return RegionAttachment; - }(spine.Attachment)); - RegionAttachment.OX1 = 0; - RegionAttachment.OY1 = 1; - RegionAttachment.OX2 = 2; - RegionAttachment.OY2 = 3; - RegionAttachment.OX3 = 4; - RegionAttachment.OY3 = 5; - RegionAttachment.OX4 = 6; - RegionAttachment.OY4 = 7; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - spine.RegionAttachment = RegionAttachment; + var RegionAttachment = (function (_super) { + __extends(RegionAttachment, _super); + function RegionAttachment(name) { + var _this = _super.call(this, name) || this; + _this.x = 0; + _this.y = 0; + _this.scaleX = 1; + _this.scaleY = 1; + _this.rotation = 0; + _this.width = 0; + _this.height = 0; + _this.color = new spine.Color(1, 1, 1, 1); + _this.offset = spine.Utils.newFloatArray(8); + _this.uvs = spine.Utils.newFloatArray(8); + _this.tempColor = new spine.Color(1, 1, 1, 1); + return _this; + } + RegionAttachment.prototype.updateOffset = function () { + var regionScaleX = this.width / this.region.originalWidth * this.scaleX; + var regionScaleY = this.height / this.region.originalHeight * this.scaleY; + var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + var localX2 = localX + this.region.width * regionScaleX; + var localY2 = localY + this.region.height * regionScaleY; + var radians = this.rotation * Math.PI / 180; + var cos = Math.cos(radians); + var sin = Math.sin(radians); + var localXCos = localX * cos + this.x; + var localXSin = localX * sin; + var localYCos = localY * cos + this.y; + var localYSin = localY * sin; + var localX2Cos = localX2 * cos + this.x; + var localX2Sin = localX2 * sin; + var localY2Cos = localY2 * cos + this.y; + var localY2Sin = localY2 * sin; + var offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + }; + RegionAttachment.prototype.setRegion = function (region) { + this.region = region; + var uvs = this.uvs; + if (region.rotate) { + uvs[2] = region.u; + uvs[3] = region.v2; + uvs[4] = region.u; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v; + uvs[0] = region.u2; + uvs[1] = region.v2; + } + else { + uvs[0] = region.u; + uvs[1] = region.v2; + uvs[2] = region.u; + uvs[3] = region.v; + uvs[4] = region.u2; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v2; + } + }; + RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { + var vertexOffset = this.offset; + var x = bone.worldX, y = bone.worldY; + var a = bone.a, b = bone.b, c = bone.c, d = bone.d; + var offsetX = 0, offsetY = 0; + offsetX = vertexOffset[RegionAttachment.OX1]; + offsetY = vertexOffset[RegionAttachment.OY1]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX2]; + offsetY = vertexOffset[RegionAttachment.OY2]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX3]; + offsetY = vertexOffset[RegionAttachment.OY3]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX4]; + offsetY = vertexOffset[RegionAttachment.OY4]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + }; + return RegionAttachment; + }(spine.Attachment)); + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + spine.RegionAttachment = RegionAttachment; })(spine || (spine = {})); var spine; (function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; + var JitterEffect = (function () { + function JitterEffect(jitterX, jitterY) { + this.jitterX = 0; + this.jitterY = 0; + this.jitterX = jitterX; + this.jitterY = jitterY; + } + JitterEffect.prototype.begin = function (skeleton) { + }; + JitterEffect.prototype.transform = function (position, uv, light, dark) { + position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + }; + JitterEffect.prototype.end = function () { + }; + return JitterEffect; + }()); + spine.JitterEffect = JitterEffect; })(spine || (spine = {})); var spine; (function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - return SwirlEffect; - }()); - SwirlEffect.interpolation = new spine.PowOut(2); - spine.SwirlEffect = SwirlEffect; + var SwirlEffect = (function () { + function SwirlEffect(radius) { + this.centerX = 0; + this.centerY = 0; + this.radius = 0; + this.angle = 0; + this.worldX = 0; + this.worldY = 0; + this.radius = radius; + } + SwirlEffect.prototype.begin = function (skeleton) { + this.worldX = skeleton.x + this.centerX; + this.worldY = skeleton.y + this.centerY; + }; + SwirlEffect.prototype.transform = function (position, uv, light, dark) { + var radAngle = this.angle * spine.MathUtils.degreesToRadians; + var x = position.x - this.worldX; + var y = position.y - this.worldY; + var dist = Math.sqrt(x * x + y * y); + if (dist < this.radius) { + var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); + var cos = Math.cos(theta); + var sin = Math.sin(theta); + position.x = cos * x - sin * y + this.worldX; + position.y = sin * x + cos * y + this.worldY; + } + }; + SwirlEffect.prototype.end = function () { + }; + return SwirlEffect; + }()); + SwirlEffect.interpolation = new spine.PowOut(2); + spine.SwirlEffect = SwirlEffect; })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(context, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - return _super.call(this, function (image) { - return new spine.webgl.GLTexture(context, image); - }, pathPrefix) || this; - } - return AssetManager; - }(spine.AssetManager)); - webgl.AssetManager = AssetManager; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var AssetManager = (function (_super) { + __extends(AssetManager, _super); + function AssetManager(context, pathPrefix) { + if (pathPrefix === void 0) { pathPrefix = ""; } + return _super.call(this, function (image) { + return new spine.webgl.GLTexture(context, image); + }, pathPrefix) || this; + } + return AssetManager; + }(spine.AssetManager)); + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var OrthoCamera = (function () { - function OrthoCamera(viewportWidth, viewportHeight) { - this.position = new webgl.Vector3(0, 0, 0); - this.direction = new webgl.Vector3(0, 0, -1); - this.up = new webgl.Vector3(0, 1, 0); - this.near = 0; - this.far = 100; - this.zoom = 1; - this.viewportWidth = 0; - this.viewportHeight = 0; - this.projectionView = new webgl.Matrix4(); - this.inverseProjectionView = new webgl.Matrix4(); - this.projection = new webgl.Matrix4(); - this.view = new webgl.Matrix4(); - this.tmp = new webgl.Vector3(); - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - this.update(); - } - OrthoCamera.prototype.update = function () { - var projection = this.projection; - var view = this.view; - var projectionView = this.projectionView; - var inverseProjectionView = this.inverseProjectionView; - var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; - projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); - view.lookAt(this.position, this.direction, this.up); - projectionView.set(projection.values); - projectionView.multiply(view); - inverseProjectionView.set(projectionView.values).invert(); - }; - OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { - var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; - var tmp = this.tmp; - tmp.x = (2 * x) / screenWidth - 1; - tmp.y = (2 * y) / screenHeight - 1; - tmp.z = (2 * screenCoords.z) - 1; - tmp.project(this.inverseProjectionView); - screenCoords.set(tmp.x, tmp.y, tmp.z); - return screenCoords; - }; - OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - }; - return OrthoCamera; - }()); - webgl.OrthoCamera = OrthoCamera; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var OrthoCamera = (function () { + function OrthoCamera(viewportWidth, viewportHeight) { + this.position = new webgl.Vector3(0, 0, 0); + this.direction = new webgl.Vector3(0, 0, -1); + this.up = new webgl.Vector3(0, 1, 0); + this.near = 0; + this.far = 100; + this.zoom = 1; + this.viewportWidth = 0; + this.viewportHeight = 0; + this.projectionView = new webgl.Matrix4(); + this.inverseProjectionView = new webgl.Matrix4(); + this.projection = new webgl.Matrix4(); + this.view = new webgl.Matrix4(); + this.tmp = new webgl.Vector3(); + this.viewportWidth = viewportWidth; + this.viewportHeight = viewportHeight; + this.update(); + } + OrthoCamera.prototype.update = function () { + var projection = this.projection; + var view = this.view; + var projectionView = this.projectionView; + var inverseProjectionView = this.inverseProjectionView; + var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; + projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); + view.lookAt(this.position, this.direction, this.up); + projectionView.set(projection.values); + projectionView.multiply(view); + inverseProjectionView.set(projectionView.values).invert(); + }; + OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { + var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; + var tmp = this.tmp; + tmp.x = (2 * x) / screenWidth - 1; + tmp.y = (2 * y) / screenHeight - 1; + tmp.z = (2 * screenCoords.z) - 1; + tmp.project(this.inverseProjectionView); + screenCoords.set(tmp.x, tmp.y, tmp.z); + return screenCoords; + }; + OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { + this.viewportWidth = viewportWidth; + this.viewportHeight = viewportHeight; + }; + return OrthoCamera; + }()); + webgl.OrthoCamera = OrthoCamera; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var GLTexture = (function (_super) { - __extends(GLTexture, _super); - function GLTexture(context, image, useMipMaps) { - if (useMipMaps === void 0) { useMipMaps = false; } - var _this = _super.call(this, image) || this; - _this.texture = null; - _this.boundUnit = 0; - _this.useMipMaps = false; - _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - _this.useMipMaps = useMipMaps; - _this.restore(); - _this.context.addRestorable(_this); - return _this; - } - GLTexture.prototype.setFilters = function (minFilter, magFilter) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); - }; - GLTexture.prototype.setWraps = function (uWrap, vWrap) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); - }; - GLTexture.prototype.update = function (useMipMaps) { - var gl = this.context.gl; - if (!this.texture) { - this.texture = this.context.gl.createTexture(); - } - this.bind(); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (useMipMaps) - gl.generateMipmap(gl.TEXTURE_2D); - }; - GLTexture.prototype.restore = function () { - this.texture = null; - this.update(this.useMipMaps); - }; - GLTexture.prototype.bind = function (unit) { - if (unit === void 0) { unit = 0; } - var gl = this.context.gl; - this.boundUnit = unit; - gl.activeTexture(gl.TEXTURE0 + unit); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - }; - GLTexture.prototype.unbind = function () { - var gl = this.context.gl; - gl.activeTexture(gl.TEXTURE0 + this.boundUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - GLTexture.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteTexture(this.texture); - }; - return GLTexture; - }(spine.Texture)); - webgl.GLTexture = GLTexture; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var GLTexture = (function (_super) { + __extends(GLTexture, _super); + function GLTexture(context, image, useMipMaps) { + if (useMipMaps === void 0) { useMipMaps = false; } + var _this = _super.call(this, image) || this; + _this.texture = null; + _this.boundUnit = 0; + _this.useMipMaps = false; + _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + _this.useMipMaps = useMipMaps; + _this.restore(); + _this.context.addRestorable(_this); + return _this; + } + GLTexture.prototype.setFilters = function (minFilter, magFilter) { + var gl = this.context.gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + }; + GLTexture.prototype.setWraps = function (uWrap, vWrap) { + var gl = this.context.gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + }; + GLTexture.prototype.update = function (useMipMaps) { + var gl = this.context.gl; + if (!this.texture) { + this.texture = this.context.gl.createTexture(); + } + this.bind(); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + }; + GLTexture.prototype.restore = function () { + this.texture = null; + this.update(this.useMipMaps); + }; + GLTexture.prototype.bind = function (unit) { + if (unit === void 0) { unit = 0; } + var gl = this.context.gl; + this.boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this.texture); + }; + GLTexture.prototype.unbind = function () { + var gl = this.context.gl; + gl.activeTexture(gl.TEXTURE0 + this.boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + }; + GLTexture.prototype.dispose = function () { + this.context.removeRestorable(this); + var gl = this.context.gl; + gl.deleteTexture(this.texture); + }; + return GLTexture; + }(spine.Texture)); + webgl.GLTexture = GLTexture; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var Input = (function () { - function Input(element) { - this.lastX = 0; - this.lastY = 0; - this.buttonDown = false; - this.currTouch = null; - this.touchesPool = new spine.Pool(function () { - return new spine.webgl.Touch(0, 0, 0); - }); - this.listeners = new Array(); - this.element = element; - this.setupCallbacks(element); - } - Input.prototype.setupCallbacks = function (element) { - var _this = this; - element.addEventListener("mousedown", function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - listeners[i].down(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = true; - } - }, true); - element.addEventListener("mousemove", function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (_this.buttonDown) { - listeners[i].dragged(x, y); - } - else { - listeners[i].moved(x, y); - } - } - _this.lastX = x; - _this.lastY = y; - } - }, true); - element.addEventListener("mouseup", function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - listeners[i].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - } - }, true); - element.addEventListener("touchstart", function (ev) { - if (_this.currTouch != null) - return; - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - _this.currTouch = _this.touchesPool.obtain(); - _this.currTouch.identifier = touch.identifier; - _this.currTouch.x = x; - _this.currTouch.y = y; - break; - } - var listeners = _this.listeners; - for (var i_8 = 0; i_8 < listeners.length; i_8++) { - listeners[i_8].down(_this.currTouch.x, _this.currTouch.y); - } - console.log("Start " + _this.currTouch.x + ", " + _this.currTouch.y); - _this.lastX = _this.currTouch.x; - _this.lastY = _this.currTouch.y; - _this.buttonDown = true; - ev.preventDefault(); - }, false); - element.addEventListener("touchend", function (ev) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_9 = 0; i_9 < listeners.length; i_9++) { - listeners[i_9].up(x, y); - } - console.log("End " + x + ", " + y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchcancel", function (ev) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_10 = 0; i_10 < listeners.length; i_10++) { - listeners[i_10].up(x, y); - } - console.log("End " + x + ", " + y); - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchmove", function (ev) { - if (_this.currTouch == null) - return; - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - var listeners = _this.listeners; - for (var i_11 = 0; i_11 < listeners.length; i_11++) { - listeners[i_11].dragged(x, y); - } - console.log("Drag " + x + ", " + y); - _this.lastX = _this.currTouch.x = x; - _this.lastY = _this.currTouch.y = y; - break; - } - } - ev.preventDefault(); - }, false); - }; - Input.prototype.addListener = function (listener) { - this.listeners.push(listener); - }; - Input.prototype.removeListener = function (listener) { - var idx = this.listeners.indexOf(listener); - if (idx > -1) { - this.listeners.splice(idx, 1); - } - }; - return Input; - }()); - webgl.Input = Input; - var Touch = (function () { - function Touch(identifier, x, y) { - this.identifier = identifier; - this.x = x; - this.y = y; - } - return Touch; - }()); - webgl.Touch = Touch; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var Input = (function () { + function Input(element) { + this.lastX = 0; + this.lastY = 0; + this.buttonDown = false; + this.currTouch = null; + this.touchesPool = new spine.Pool(function () { + return new spine.webgl.Touch(0, 0, 0); + }); + this.listeners = new Array(); + this.element = element; + this.setupCallbacks(element); + } + Input.prototype.setupCallbacks = function (element) { + var _this = this; + element.addEventListener("mousedown", function (ev) { + if (ev instanceof MouseEvent) { + var rect = element.getBoundingClientRect(); + var x = ev.clientX - rect.left; + var y = ev.clientY - rect.top; + var listeners = _this.listeners; + for (var i = 0; i < listeners.length; i++) { + listeners[i].down(x, y); + } + _this.lastX = x; + _this.lastY = y; + _this.buttonDown = true; + } + }, true); + element.addEventListener("mousemove", function (ev) { + if (ev instanceof MouseEvent) { + var rect = element.getBoundingClientRect(); + var x = ev.clientX - rect.left; + var y = ev.clientY - rect.top; + var listeners = _this.listeners; + for (var i = 0; i < listeners.length; i++) { + if (_this.buttonDown) { + listeners[i].dragged(x, y); + } + else { + listeners[i].moved(x, y); + } + } + _this.lastX = x; + _this.lastY = y; + } + }, true); + element.addEventListener("mouseup", function (ev) { + if (ev instanceof MouseEvent) { + var rect = element.getBoundingClientRect(); + var x = ev.clientX - rect.left; + var y = ev.clientY - rect.top; + var listeners = _this.listeners; + for (var i = 0; i < listeners.length; i++) { + listeners[i].up(x, y); + } + _this.lastX = x; + _this.lastY = y; + _this.buttonDown = false; + } + }, true); + element.addEventListener("touchstart", function (ev) { + if (_this.currTouch != null) + return; + var touches = ev.changedTouches; + for (var i = 0; i < touches.length; i++) { + var touch = touches[i]; + var rect = element.getBoundingClientRect(); + var x = touch.clientX - rect.left; + var y = touch.clientY - rect.top; + _this.currTouch = _this.touchesPool.obtain(); + _this.currTouch.identifier = touch.identifier; + _this.currTouch.x = x; + _this.currTouch.y = y; + break; + } + var listeners = _this.listeners; + for (var i_8 = 0; i_8 < listeners.length; i_8++) { + listeners[i_8].down(_this.currTouch.x, _this.currTouch.y); + } + console.log("Start " + _this.currTouch.x + ", " + _this.currTouch.y); + _this.lastX = _this.currTouch.x; + _this.lastY = _this.currTouch.y; + _this.buttonDown = true; + ev.preventDefault(); + }, false); + element.addEventListener("touchend", function (ev) { + var touches = ev.changedTouches; + for (var i = 0; i < touches.length; i++) { + var touch = touches[i]; + if (_this.currTouch.identifier === touch.identifier) { + var rect = element.getBoundingClientRect(); + var x = _this.currTouch.x = touch.clientX - rect.left; + var y = _this.currTouch.y = touch.clientY - rect.top; + _this.touchesPool.free(_this.currTouch); + var listeners = _this.listeners; + for (var i_9 = 0; i_9 < listeners.length; i_9++) { + listeners[i_9].up(x, y); + } + console.log("End " + x + ", " + y); + _this.lastX = x; + _this.lastY = y; + _this.buttonDown = false; + _this.currTouch = null; + break; + } + } + ev.preventDefault(); + }, false); + element.addEventListener("touchcancel", function (ev) { + var touches = ev.changedTouches; + for (var i = 0; i < touches.length; i++) { + var touch = touches[i]; + if (_this.currTouch.identifier === touch.identifier) { + var rect = element.getBoundingClientRect(); + var x = _this.currTouch.x = touch.clientX - rect.left; + var y = _this.currTouch.y = touch.clientY - rect.top; + _this.touchesPool.free(_this.currTouch); + var listeners = _this.listeners; + for (var i_10 = 0; i_10 < listeners.length; i_10++) { + listeners[i_10].up(x, y); + } + console.log("End " + x + ", " + y); + _this.lastX = x; + _this.lastY = y; + _this.buttonDown = false; + _this.currTouch = null; + break; + } + } + ev.preventDefault(); + }, false); + element.addEventListener("touchmove", function (ev) { + if (_this.currTouch == null) + return; + var touches = ev.changedTouches; + for (var i = 0; i < touches.length; i++) { + var touch = touches[i]; + if (_this.currTouch.identifier === touch.identifier) { + var rect = element.getBoundingClientRect(); + var x = touch.clientX - rect.left; + var y = touch.clientY - rect.top; + var listeners = _this.listeners; + for (var i_11 = 0; i_11 < listeners.length; i_11++) { + listeners[i_11].dragged(x, y); + } + console.log("Drag " + x + ", " + y); + _this.lastX = _this.currTouch.x = x; + _this.lastY = _this.currTouch.y = y; + break; + } + } + ev.preventDefault(); + }, false); + }; + Input.prototype.addListener = function (listener) { + this.listeners.push(listener); + }; + Input.prototype.removeListener = function (listener) { + var idx = this.listeners.indexOf(listener); + if (idx > -1) { + this.listeners.splice(idx, 1); + } + }; + return Input; + }()); + webgl.Input = Input; + var Touch = (function () { + function Touch(identifier, x, y) { + this.identifier = identifier; + this.x = x; + this.y = y; + } + return Touch; + }()); + webgl.Touch = Touch; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var LoadingScreen = (function () { - function LoadingScreen(renderer) { - this.logo = null; - this.spinner = null; - this.angle = 0; - this.fadeOut = 0; - this.timeKeeper = new spine.TimeKeeper(); - this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); - this.tempColor = new spine.Color(); - this.firstDraw = 0; - this.renderer = renderer; - this.timeKeeper.maxDelta = 9; - if (LoadingScreen.logoImg === null) { - var isSafari = navigator.userAgent.indexOf("Safari") > -1; - LoadingScreen.logoImg = new Image(); - LoadingScreen.logoImg.src = LoadingScreen.SPINE_LOGO_DATA; - if (!isSafari) - LoadingScreen.logoImg.crossOrigin = "anonymous"; - LoadingScreen.logoImg.onload = function (ev) { - LoadingScreen.loaded++; - }; - LoadingScreen.spinnerImg = new Image(); - LoadingScreen.spinnerImg.src = LoadingScreen.SPINNER_DATA; - if (!isSafari) - LoadingScreen.spinnerImg.crossOrigin = "anonymous"; - LoadingScreen.spinnerImg.onload = function (ev) { - LoadingScreen.loaded++; - }; - } - } - LoadingScreen.prototype.draw = function (complete) { - if (complete === void 0) { complete = false; } - if (complete && this.fadeOut > LoadingScreen.FADE_SECONDS) - return; - this.timeKeeper.update(); - var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.75)); - this.angle -= this.timeKeeper.delta * 360 * (1 + 1.5 * Math.pow(a, 5)); - var renderer = this.renderer; - var canvas = renderer.canvas; - var gl = renderer.context.gl; - var oldX = renderer.camera.position.x, oldY = renderer.camera.position.y; - renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); - renderer.camera.viewportWidth = canvas.width; - renderer.camera.viewportHeight = canvas.height; - renderer.resize(webgl.ResizeMode.Stretch); - if (!complete) { - gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); - gl.clear(gl.COLOR_BUFFER_BIT); - this.tempColor.a = 1; - } - else { - this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); - if (this.fadeOut > LoadingScreen.FADE_SECONDS) { - renderer.camera.position.set(oldX, oldY, 0); - return; - } - a = 1 - this.fadeOut / LoadingScreen.FADE_SECONDS; - this.tempColor.setFromColor(this.backgroundColor); - this.tempColor.a = 1 - (a - 1) * (a - 1); - renderer.begin(); - renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, this.tempColor, this.tempColor, this.tempColor, this.tempColor); - renderer.end(); - } - this.tempColor.set(1, 1, 1, this.tempColor.a); - if (LoadingScreen.loaded != 2) - return; - if (this.logo === null) { - this.logo = new webgl.GLTexture(renderer.context, LoadingScreen.logoImg); - this.spinner = new webgl.GLTexture(renderer.context, LoadingScreen.spinnerImg); - } - this.logo.update(false); - this.spinner.update(false); - var logoWidth = this.logo.getImage().width; - var logoHeight = this.logo.getImage().height; - var spinnerWidth = this.spinner.getImage().width; - var spinnerHeight = this.spinner.getImage().height; - renderer.batcher.setBlendMode(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - renderer.begin(); - renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, this.tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerWidth) / 2, (canvas.height - spinnerHeight) / 2, spinnerWidth, spinnerHeight, spinnerWidth / 2, spinnerHeight / 2, this.angle, this.tempColor); - renderer.end(); - renderer.camera.position.set(oldX, oldY, 0); - }; - return LoadingScreen; - }()); - LoadingScreen.FADE_SECONDS = 1; - LoadingScreen.loaded = 0; - LoadingScreen.spinnerImg = null; - LoadingScreen.logoImg = null; - LoadingScreen.SPINNER_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAChCAMAAAB3TUS6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYNQTFRFAAAA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AAkTDRyAAAAIB0Uk5TAAABAgMEBQYHCAkKCwwODxAREhMUFRYXGBkaHB0eICEiIyQlJicoKSorLC0uLzAxMjM0Nzg5Ojs8PT4/QEFDRUlKS0xNTk9QUlRWWFlbXF1eYWJjZmhscHF0d3h5e3x+f4CIiYuMj5GSlJWXm56io6arr7rAxcjO0dXe6Onr8fmb5sOOAAADuElEQVQYGe3B+3vTVBwH4M/3nCRt13br2Lozhug2q25gYQubcxqVKYoMCYoKjEsUdSpeiBc0Kl7yp9t2za39pely7PF5zvuiQKc+/e2f8K+f9g2oyQ77Ag4VGX+HketQ0XYYe0JQ0CdhogwF+WFiBgr6JkxUoKCDMMGgoP0w9gdUtB3GfoCKVsPYAVQ0H8YuQUWVMHYGKuJhrAklPQkjJpT0bdj3O9S0FfZ9ADXxP8MjVSiqFfa8B2VVV8+df14QtB4iwn+BpuZEgyM38WMQHDYhnbkgukrIh5ygZ48glyn6KshlL+jbhVRcxCzk0ApiC5CI5kVsgTAy9jiI/WxBGmqIFBMjqwYphwRZaiLNwsjqQdoVSFISGRwjM4OMFUjBRcYCYWT0XZD2SwUS0LzIKCGH2SDja0LxKiJjCrm0gowVFI6aIs1CTouPg5QvUTgSKXMMuVUeBSmEopFITBPGwO8HCYbCTYtImTAWejuI3CMUjmZFT5NjbM/9GvQcMkhADdFRIxxD7aug4wGDFGSVTcLx0MzutQ2CpmmapmmapmmapmmapmmaphWBmGFV6rNNcaLC0GUuv3LROftUo8wJk0a10207sVED6IIf+9673LIwQeW2PaCEJX/A+xYmhTbtQUu46g96SJgQZg9Zwxf+EAMTwuwhm3jkD7EwIdweBn+YhQlh9pA2HvpDTEwIs4es4GN/CMekNOxBJ9D2B10nTAyfW7fT1hjYgZ/xYIUwUcycaiwuv2h3tOcZADr7ud/12c0ru2cWSwQ1UAcixIgImqZpmqZpmqZpmqZpmqZp2v8HMSIcF186t8oghbnlOJt1wnHwl7yOGxwSlHacrjWG8dVuej03OApn7jhHtiyMiZa9yD6haLYTebWOsbDXvQRHwchJWSTkV/rQS+EoWttJaTHkJe56KXcJRZt20jY48nnBy9hE4WjLSbvAkIfwMm5zFG/KyWgRRke3vYwGZDjpZHCMruJltCAFrTtpVYxu1ktzCHKwbSdlGqOreynXGGQpOylljI5uebFbBuSZc2IbhBxmvcj9GiSiZ52+HQO5nPb6TkIqajs9L5eQk7jnddxZgGT0jNOxYSI36+Kdj9oG5OPV6QpB6yJuGAYnqIrecLveYlDUKffIOtREl90+BiWV3cgMlNR0I09DSS030oaSttzILpT0phu5BBWRmyAoiLkJgoIMN8GgoJKb4FBQzU0YUFDdTRhQUNVNcCjIdBMEBdE7buQ8lFRz+97lUFN5fe+qu//aMkeB/gU2ae9y2HgbngAAAABJRU5ErkJggg=="; - LoadingScreen.SPINE_LOGO_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAZCAYAAACis3k0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtNJREFUaN7tmT2I1EAUxwN+oWgRT0HFKo0WCkJ6ObmAWFwZbCxsXGysLNJaiCyIoDaSwk4ETzvhmnBaCRbBWoQ01ho4PwotjP8cE337mMy8TLK757mBH3fLTWbe/PbN53neNniqZW8FvAVvQAqugwvgDDgO9niLRyTyJagM/ACPF6bsIl9ZRDac/Cc6tLn5xQdRQ496QlKPLxD5QCDxO9jtGM8QfYoIgUlgCipGCRJL5VvlyOdCU09iEXkCfLSIfCrs7Fab6nOsiafu06iDwES9w/uU1QnDC+ekkVS9vEaDsgVeB0d+z1VDtOGxRaYPboP3Gokb4GgXkZp4chZPJKgvZ3U0XkriK/TIt9YUDllFgTAjGwoaoHqfBhMI58yD4BQ4V6/aHYdfxToftvw9F2SiVroawU2/Cv5C4Thv0KB9S5nxlOd4STxjwUjzSdYlgrYijw2BsEfgsaFcM09lhiys94xXQQwugcvgJrgFLjrEE7WUiTuWCQzt/ZXN7FfqGwuGClyVy2xZAFmfDQvNtwFFSspMDGsD+UTWqu1KoVmVooFEJgKRXw0if85RpISEzwsjzeqWzkjkC4PIJ3MUmQgITAHlQwTFhnZhELkEntfZRwR+AvfAgXmJHOqU02XligWT8ppg67NXbdCXeq7afUQ6L8C2DalEZNt2YyQ94Qy8/ekjMpBMbfyl5iTjG7YAI8cNecROAb4kJmTjaXAF3AGvwQewOiuRxEtlSaT4j2h2lMsUueQEoMlIKpTvAmKhxPMtC876jEX6rE8l8TNx/KVbn6xlWU9NWcSDUsO4NGWpQOTZFpHPOooMXcswmW2XFk3ixb2v0Nq+XVKP00QNaffBLyWwBI/AkTlfMYZDXMf12kc6yjwEjoFdO/5me5oi/6tnyhlZX6OtgmX1c2Uh0k3khmbB2b9TRfpd/jfTUeRDJvHdYg5wE7kPXAN3wQ1weDvH+xufEgpi5qIl3QAAAABJRU5ErkJggg=="; - webgl.LoadingScreen = LoadingScreen; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var LoadingScreen = (function () { + function LoadingScreen(renderer) { + this.logo = null; + this.spinner = null; + this.angle = 0; + this.fadeOut = 0; + this.timeKeeper = new spine.TimeKeeper(); + this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); + this.tempColor = new spine.Color(); + this.firstDraw = 0; + this.renderer = renderer; + this.timeKeeper.maxDelta = 9; + if (LoadingScreen.logoImg === null) { + var isSafari = navigator.userAgent.indexOf("Safari") > -1; + LoadingScreen.logoImg = new Image(); + LoadingScreen.logoImg.src = LoadingScreen.SPINE_LOGO_DATA; + if (!isSafari) + LoadingScreen.logoImg.crossOrigin = "anonymous"; + LoadingScreen.logoImg.onload = function (ev) { + LoadingScreen.loaded++; + }; + LoadingScreen.spinnerImg = new Image(); + LoadingScreen.spinnerImg.src = LoadingScreen.SPINNER_DATA; + if (!isSafari) + LoadingScreen.spinnerImg.crossOrigin = "anonymous"; + LoadingScreen.spinnerImg.onload = function (ev) { + LoadingScreen.loaded++; + }; + } + } + LoadingScreen.prototype.draw = function (complete) { + if (complete === void 0) { complete = false; } + if (complete && this.fadeOut > LoadingScreen.FADE_SECONDS) + return; + this.timeKeeper.update(); + var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.75)); + this.angle -= this.timeKeeper.delta * 360 * (1 + 1.5 * Math.pow(a, 5)); + var renderer = this.renderer; + var canvas = renderer.canvas; + var gl = renderer.context.gl; + var oldX = renderer.camera.position.x, oldY = renderer.camera.position.y; + renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); + renderer.camera.viewportWidth = canvas.width; + renderer.camera.viewportHeight = canvas.height; + renderer.resize(webgl.ResizeMode.Stretch); + if (!complete) { + gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); + gl.clear(gl.COLOR_BUFFER_BIT); + this.tempColor.a = 1; + } + else { + this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); + if (this.fadeOut > LoadingScreen.FADE_SECONDS) { + renderer.camera.position.set(oldX, oldY, 0); + return; + } + a = 1 - this.fadeOut / LoadingScreen.FADE_SECONDS; + this.tempColor.setFromColor(this.backgroundColor); + this.tempColor.a = 1 - (a - 1) * (a - 1); + renderer.begin(); + renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, this.tempColor, this.tempColor, this.tempColor, this.tempColor); + renderer.end(); + } + this.tempColor.set(1, 1, 1, this.tempColor.a); + if (LoadingScreen.loaded != 2) + return; + if (this.logo === null) { + this.logo = new webgl.GLTexture(renderer.context, LoadingScreen.logoImg); + this.spinner = new webgl.GLTexture(renderer.context, LoadingScreen.spinnerImg); + } + this.logo.update(false); + this.spinner.update(false); + var logoWidth = this.logo.getImage().width; + var logoHeight = this.logo.getImage().height; + var spinnerWidth = this.spinner.getImage().width; + var spinnerHeight = this.spinner.getImage().height; + renderer.batcher.setBlendMode(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + renderer.begin(); + renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, this.tempColor); + renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerWidth) / 2, (canvas.height - spinnerHeight) / 2, spinnerWidth, spinnerHeight, spinnerWidth / 2, spinnerHeight / 2, this.angle, this.tempColor); + renderer.end(); + renderer.camera.position.set(oldX, oldY, 0); + }; + return LoadingScreen; + }()); + LoadingScreen.FADE_SECONDS = 1; + LoadingScreen.loaded = 0; + LoadingScreen.spinnerImg = null; + LoadingScreen.logoImg = null; + LoadingScreen.SPINNER_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAChCAMAAAB3TUS6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYNQTFRFAAAA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AA/0AAkTDRyAAAAIB0Uk5TAAABAgMEBQYHCAkKCwwODxAREhMUFRYXGBkaHB0eICEiIyQlJicoKSorLC0uLzAxMjM0Nzg5Ojs8PT4/QEFDRUlKS0xNTk9QUlRWWFlbXF1eYWJjZmhscHF0d3h5e3x+f4CIiYuMj5GSlJWXm56io6arr7rAxcjO0dXe6Onr8fmb5sOOAAADuElEQVQYGe3B+3vTVBwH4M/3nCRt13br2Lozhug2q25gYQubcxqVKYoMCYoKjEsUdSpeiBc0Kl7yp9t2za39pely7PF5zvuiQKc+/e2f8K+f9g2oyQ77Ag4VGX+HketQ0XYYe0JQ0CdhogwF+WFiBgr6JkxUoKCDMMGgoP0w9gdUtB3GfoCKVsPYAVQ0H8YuQUWVMHYGKuJhrAklPQkjJpT0bdj3O9S0FfZ9ADXxP8MjVSiqFfa8B2VVV8+df14QtB4iwn+BpuZEgyM38WMQHDYhnbkgukrIh5ygZ48glyn6KshlL+jbhVRcxCzk0ApiC5CI5kVsgTAy9jiI/WxBGmqIFBMjqwYphwRZaiLNwsjqQdoVSFISGRwjM4OMFUjBRcYCYWT0XZD2SwUS0LzIKCGH2SDja0LxKiJjCrm0gowVFI6aIs1CTouPg5QvUTgSKXMMuVUeBSmEopFITBPGwO8HCYbCTYtImTAWejuI3CMUjmZFT5NjbM/9GvQcMkhADdFRIxxD7aug4wGDFGSVTcLx0MzutQ2CpmmapmmapmmapmmapmmaphWBmGFV6rNNcaLC0GUuv3LROftUo8wJk0a10207sVED6IIf+9673LIwQeW2PaCEJX/A+xYmhTbtQUu46g96SJgQZg9Zwxf+EAMTwuwhm3jkD7EwIdweBn+YhQlh9pA2HvpDTEwIs4es4GN/CMekNOxBJ9D2B10nTAyfW7fT1hjYgZ/xYIUwUcycaiwuv2h3tOcZADr7ud/12c0ru2cWSwQ1UAcixIgImqZpmqZpmqZpmqZpmqZp2v8HMSIcF186t8oghbnlOJt1wnHwl7yOGxwSlHacrjWG8dVuej03OApn7jhHtiyMiZa9yD6haLYTebWOsbDXvQRHwchJWSTkV/rQS+EoWttJaTHkJe56KXcJRZt20jY48nnBy9hE4WjLSbvAkIfwMm5zFG/KyWgRRke3vYwGZDjpZHCMruJltCAFrTtpVYxu1ktzCHKwbSdlGqOreynXGGQpOylljI5uebFbBuSZc2IbhBxmvcj9GiSiZ52+HQO5nPb6TkIqajs9L5eQk7jnddxZgGT0jNOxYSI36+Kdj9oG5OPV6QpB6yJuGAYnqIrecLveYlDUKffIOtREl90+BiWV3cgMlNR0I09DSS030oaSttzILpT0phu5BBWRmyAoiLkJgoIMN8GgoJKb4FBQzU0YUFDdTRhQUNVNcCjIdBMEBdE7buQ8lFRz+97lUFN5fe+qu//aMkeB/gU2ae9y2HgbngAAAABJRU5ErkJggg=="; + LoadingScreen.SPINE_LOGO_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAZCAYAAACis3k0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtNJREFUaN7tmT2I1EAUxwN+oWgRT0HFKo0WCkJ6ObmAWFwZbCxsXGysLNJaiCyIoDaSwk4ETzvhmnBaCRbBWoQ01ho4PwotjP8cE337mMy8TLK757mBH3fLTWbe/PbN53neNniqZW8FvAVvQAqugwvgDDgO9niLRyTyJagM/ACPF6bsIl9ZRDac/Cc6tLn5xQdRQ496QlKPLxD5QCDxO9jtGM8QfYoIgUlgCipGCRJL5VvlyOdCU09iEXkCfLSIfCrs7Fab6nOsiafu06iDwES9w/uU1QnDC+ekkVS9vEaDsgVeB0d+z1VDtOGxRaYPboP3Gokb4GgXkZp4chZPJKgvZ3U0XkriK/TIt9YUDllFgTAjGwoaoHqfBhMI58yD4BQ4V6/aHYdfxToftvw9F2SiVroawU2/Cv5C4Thv0KB9S5nxlOd4STxjwUjzSdYlgrYijw2BsEfgsaFcM09lhiys94xXQQwugcvgJrgFLjrEE7WUiTuWCQzt/ZXN7FfqGwuGClyVy2xZAFmfDQvNtwFFSspMDGsD+UTWqu1KoVmVooFEJgKRXw0if85RpISEzwsjzeqWzkjkC4PIJ3MUmQgITAHlQwTFhnZhELkEntfZRwR+AvfAgXmJHOqU02XligWT8ppg67NXbdCXeq7afUQ6L8C2DalEZNt2YyQ94Qy8/ekjMpBMbfyl5iTjG7YAI8cNecROAb4kJmTjaXAF3AGvwQewOiuRxEtlSaT4j2h2lMsUueQEoMlIKpTvAmKhxPMtC876jEX6rE8l8TNx/KVbn6xlWU9NWcSDUsO4NGWpQOTZFpHPOooMXcswmW2XFk3ixb2v0Nq+XVKP00QNaffBLyWwBI/AkTlfMYZDXMf12kc6yjwEjoFdO/5me5oi/6tnyhlZX6OtgmX1c2Uh0k3khmbB2b9TRfpd/jfTUeRDJvHdYg5wE7kPXAN3wQ1weDvH+xufEgpi5qIl3QAAAABJRU5ErkJggg=="; + webgl.LoadingScreen = LoadingScreen; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - webgl.M00 = 0; - webgl.M01 = 4; - webgl.M02 = 8; - webgl.M03 = 12; - webgl.M10 = 1; - webgl.M11 = 5; - webgl.M12 = 9; - webgl.M13 = 13; - webgl.M20 = 2; - webgl.M21 = 6; - webgl.M22 = 10; - webgl.M23 = 14; - webgl.M30 = 3; - webgl.M31 = 7; - webgl.M32 = 11; - webgl.M33 = 15; - var Matrix4 = (function () { - function Matrix4() { - this.temp = new Float32Array(16); - this.values = new Float32Array(16); - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M11] = 1; - v[webgl.M22] = 1; - v[webgl.M33] = 1; - } - Matrix4.prototype.set = function (values) { - this.values.set(values); - return this; - }; - Matrix4.prototype.transpose = function () { - var t = this.temp; - var v = this.values; - t[webgl.M00] = v[webgl.M00]; - t[webgl.M01] = v[webgl.M10]; - t[webgl.M02] = v[webgl.M20]; - t[webgl.M03] = v[webgl.M30]; - t[webgl.M10] = v[webgl.M01]; - t[webgl.M11] = v[webgl.M11]; - t[webgl.M12] = v[webgl.M21]; - t[webgl.M13] = v[webgl.M31]; - t[webgl.M20] = v[webgl.M02]; - t[webgl.M21] = v[webgl.M12]; - t[webgl.M22] = v[webgl.M22]; - t[webgl.M23] = v[webgl.M32]; - t[webgl.M30] = v[webgl.M03]; - t[webgl.M31] = v[webgl.M13]; - t[webgl.M32] = v[webgl.M23]; - t[webgl.M33] = v[webgl.M33]; - return this.set(t); - }; - Matrix4.prototype.identity = function () { - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M01] = 0; - v[webgl.M02] = 0; - v[webgl.M03] = 0; - v[webgl.M10] = 0; - v[webgl.M11] = 1; - v[webgl.M12] = 0; - v[webgl.M13] = 0; - v[webgl.M20] = 0; - v[webgl.M21] = 0; - v[webgl.M22] = 1; - v[webgl.M23] = 0; - v[webgl.M30] = 0; - v[webgl.M31] = 0; - v[webgl.M32] = 0; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.invert = function () { - var v = this.values; - var t = this.temp; - var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - if (l_det == 0) - throw new Error("non-invertible matrix"); - var inv_det = 1.0 / l_det; - t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] - - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] - + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] - - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] - + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] - + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] - - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; - t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; - t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; - t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] - - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; - v[webgl.M00] = t[webgl.M00] * inv_det; - v[webgl.M01] = t[webgl.M01] * inv_det; - v[webgl.M02] = t[webgl.M02] * inv_det; - v[webgl.M03] = t[webgl.M03] * inv_det; - v[webgl.M10] = t[webgl.M10] * inv_det; - v[webgl.M11] = t[webgl.M11] * inv_det; - v[webgl.M12] = t[webgl.M12] * inv_det; - v[webgl.M13] = t[webgl.M13] * inv_det; - v[webgl.M20] = t[webgl.M20] * inv_det; - v[webgl.M21] = t[webgl.M21] * inv_det; - v[webgl.M22] = t[webgl.M22] * inv_det; - v[webgl.M23] = t[webgl.M23] * inv_det; - v[webgl.M30] = t[webgl.M30] * inv_det; - v[webgl.M31] = t[webgl.M31] * inv_det; - v[webgl.M32] = t[webgl.M32] * inv_det; - v[webgl.M33] = t[webgl.M33] * inv_det; - return this; - }; - Matrix4.prototype.determinant = function () { - var v = this.values; - return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - }; - Matrix4.prototype.translate = function (x, y, z) { - var v = this.values; - v[webgl.M03] += x; - v[webgl.M13] += y; - v[webgl.M23] += z; - return this; - }; - Matrix4.prototype.copy = function () { - return new Matrix4().set(this.values); - }; - Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { - this.identity(); - var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); - var l_a1 = (far + near) / (near - far); - var l_a2 = (2 * far * near) / (near - far); - var v = this.values; - v[webgl.M00] = l_fd / aspectRatio; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = l_fd; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = l_a1; - v[webgl.M32] = -1; - v[webgl.M03] = 0; - v[webgl.M13] = 0; - v[webgl.M23] = l_a2; - v[webgl.M33] = 0; - return this; - }; - Matrix4.prototype.ortho2d = function (x, y, width, height) { - return this.ortho(x, x + width, y, y + height, 0, 1); - }; - Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { - this.identity(); - var x_orth = 2 / (right - left); - var y_orth = 2 / (top - bottom); - var z_orth = -2 / (far - near); - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(far + near) / (far - near); - var v = this.values; - v[webgl.M00] = x_orth; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = y_orth; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = z_orth; - v[webgl.M32] = 0; - v[webgl.M03] = tx; - v[webgl.M13] = ty; - v[webgl.M23] = tz; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.multiply = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; - t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; - t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; - t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; - t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; - t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; - t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; - t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; - t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; - t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; - t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; - t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; - t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; - t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; - t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; - t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.multiplyLeft = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; - t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; - t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; - t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; - t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; - t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; - t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; - t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; - t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; - t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; - t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; - t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; - t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; - t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; - t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; - t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.lookAt = function (position, direction, up) { - Matrix4.initTemps(); - var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; - zAxis.setFrom(direction).normalize(); - xAxis.setFrom(direction).normalize(); - xAxis.cross(up).normalize(); - yAxis.setFrom(xAxis).cross(zAxis).normalize(); - this.identity(); - var val = this.values; - val[webgl.M00] = xAxis.x; - val[webgl.M01] = xAxis.y; - val[webgl.M02] = xAxis.z; - val[webgl.M10] = yAxis.x; - val[webgl.M11] = yAxis.y; - val[webgl.M12] = yAxis.z; - val[webgl.M20] = -zAxis.x; - val[webgl.M21] = -zAxis.y; - val[webgl.M22] = -zAxis.z; - Matrix4.tmpMatrix.identity(); - Matrix4.tmpMatrix.values[webgl.M03] = -position.x; - Matrix4.tmpMatrix.values[webgl.M13] = -position.y; - Matrix4.tmpMatrix.values[webgl.M23] = -position.z; - this.multiply(Matrix4.tmpMatrix); - return this; - }; - Matrix4.initTemps = function () { - if (Matrix4.xAxis === null) - Matrix4.xAxis = new webgl.Vector3(); - if (Matrix4.yAxis === null) - Matrix4.yAxis = new webgl.Vector3(); - if (Matrix4.zAxis === null) - Matrix4.zAxis = new webgl.Vector3(); - }; - return Matrix4; - }()); - Matrix4.xAxis = null; - Matrix4.yAxis = null; - Matrix4.zAxis = null; - Matrix4.tmpMatrix = new Matrix4(); - webgl.Matrix4 = Matrix4; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + var Matrix4 = (function () { + function Matrix4() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + Matrix4.prototype.set = function (values) { + this.values.set(values); + return this; + }; + Matrix4.prototype.transpose = function () { + var t = this.temp; + var v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + }; + Matrix4.prototype.identity = function () { + var v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.invert = function () { + var v = this.values; + var t = this.temp; + var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + var inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + }; + Matrix4.prototype.determinant = function () { + var v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + }; + Matrix4.prototype.translate = function (x, y, z) { + var v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + }; + Matrix4.prototype.copy = function () { + return new Matrix4().set(this.values); + }; + Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { + this.identity(); + var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + var l_a1 = (far + near) / (near - far); + var l_a2 = (2 * far * near) / (near - far); + var v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + }; + Matrix4.prototype.ortho2d = function (x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + }; + Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { + this.identity(); + var x_orth = 2 / (right - left); + var y_orth = 2 / (top - bottom); + var z_orth = -2 / (far - near); + var tx = -(right + left) / (right - left); + var ty = -(top + bottom) / (top - bottom); + var tz = -(far + near) / (far - near); + var v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + }; + Matrix4.prototype.multiply = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.multiplyLeft = function (matrix) { + var t = this.temp; + var v = this.values; + var m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + }; + Matrix4.prototype.lookAt = function (position, direction, up) { + Matrix4.initTemps(); + var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; + zAxis.setFrom(direction).normalize(); + xAxis.setFrom(direction).normalize(); + xAxis.cross(up).normalize(); + yAxis.setFrom(xAxis).cross(zAxis).normalize(); + this.identity(); + var val = this.values; + val[webgl.M00] = xAxis.x; + val[webgl.M01] = xAxis.y; + val[webgl.M02] = xAxis.z; + val[webgl.M10] = yAxis.x; + val[webgl.M11] = yAxis.y; + val[webgl.M12] = yAxis.z; + val[webgl.M20] = -zAxis.x; + val[webgl.M21] = -zAxis.y; + val[webgl.M22] = -zAxis.z; + Matrix4.tmpMatrix.identity(); + Matrix4.tmpMatrix.values[webgl.M03] = -position.x; + Matrix4.tmpMatrix.values[webgl.M13] = -position.y; + Matrix4.tmpMatrix.values[webgl.M23] = -position.z; + this.multiply(Matrix4.tmpMatrix); + return this; + }; + Matrix4.initTemps = function () { + if (Matrix4.xAxis === null) + Matrix4.xAxis = new webgl.Vector3(); + if (Matrix4.yAxis === null) + Matrix4.yAxis = new webgl.Vector3(); + if (Matrix4.zAxis === null) + Matrix4.zAxis = new webgl.Vector3(); + }; + return Matrix4; + }()); + Matrix4.xAxis = null; + Matrix4.yAxis = null; + Matrix4.zAxis = null; + Matrix4.tmpMatrix = new Matrix4(); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var Mesh = (function () { - function Mesh(context, attributes, maxVertices, maxIndices) { - this.attributes = attributes; - this.verticesLength = 0; - this.dirtyVertices = false; - this.indicesLength = 0; - this.dirtyIndices = false; - this.elementsPerVertex = 0; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.elementsPerVertex = 0; - for (var i = 0; i < attributes.length; i++) { - this.elementsPerVertex += attributes[i].numElements; - } - this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); - this.indices = new Uint16Array(maxIndices); - this.context.addRestorable(this); - } - Mesh.prototype.getAttributes = function () { return this.attributes; }; - Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; - Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; - Mesh.prototype.setVerticesLength = function (length) { - this.dirtyVertices = true; - this.verticesLength = length; - }; - Mesh.prototype.getVertices = function () { return this.vertices; }; - Mesh.prototype.maxIndices = function () { return this.indices.length; }; - Mesh.prototype.numIndices = function () { return this.indicesLength; }; - Mesh.prototype.setIndicesLength = function (length) { - this.dirtyIndices = true; - this.indicesLength = length; - }; - Mesh.prototype.getIndices = function () { return this.indices; }; - ; - Mesh.prototype.getVertexSizeInFloats = function () { - var size = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attribute = this.attributes[i]; - size += attribute.numElements; - } - return size; - }; - Mesh.prototype.setVertices = function (vertices) { - this.dirtyVertices = true; - if (vertices.length > this.vertices.length) - throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); - this.vertices.set(vertices, 0); - this.verticesLength = vertices.length; - }; - Mesh.prototype.setIndices = function (indices) { - this.dirtyIndices = true; - if (indices.length > this.indices.length) - throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); - this.indices.set(indices, 0); - this.indicesLength = indices.length; - }; - Mesh.prototype.draw = function (shader, primitiveType) { - this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); - }; - Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { - var gl = this.context.gl; - if (this.dirtyVertices || this.dirtyIndices) - this.update(); - this.bind(shader); - if (this.indicesLength > 0) { - gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); - } - else { - gl.drawArrays(primitiveType, offset, count); - } - this.unbind(shader); - }; - Mesh.prototype.bind = function (shader) { - var gl = this.context.gl; - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - var offset = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_1 = shader.getAttributeLocation(attrib.name); - gl.enableVertexAttribArray(location_1); - gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); - offset += attrib.numElements; - } - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - }; - Mesh.prototype.unbind = function (shader) { - var gl = this.context.gl; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_2 = shader.getAttributeLocation(attrib.name); - gl.disableVertexAttribArray(location_2); - } - gl.bindBuffer(gl.ARRAY_BUFFER, null); - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); - }; - Mesh.prototype.update = function () { - var gl = this.context.gl; - if (this.dirtyVertices) { - if (!this.verticesBuffer) { - this.verticesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); - this.dirtyVertices = false; - } - if (this.dirtyIndices) { - if (!this.indicesBuffer) { - this.indicesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); - this.dirtyIndices = false; - } - }; - Mesh.prototype.restore = function () { - this.verticesBuffer = null; - this.indicesBuffer = null; - this.update(); - }; - Mesh.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteBuffer(this.verticesBuffer); - gl.deleteBuffer(this.indicesBuffer); - }; - return Mesh; - }()); - webgl.Mesh = Mesh; - var VertexAttribute = (function () { - function VertexAttribute(name, type, numElements) { - this.name = name; - this.type = type; - this.numElements = numElements; - } - return VertexAttribute; - }()); - webgl.VertexAttribute = VertexAttribute; - var Position2Attribute = (function (_super) { - __extends(Position2Attribute, _super); - function Position2Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; - } - return Position2Attribute; - }(VertexAttribute)); - webgl.Position2Attribute = Position2Attribute; - var Position3Attribute = (function (_super) { - __extends(Position3Attribute, _super); - function Position3Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; - } - return Position3Attribute; - }(VertexAttribute)); - webgl.Position3Attribute = Position3Attribute; - var TexCoordAttribute = (function (_super) { - __extends(TexCoordAttribute, _super); - function TexCoordAttribute(unit) { - if (unit === void 0) { unit = 0; } - return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; - } - return TexCoordAttribute; - }(VertexAttribute)); - webgl.TexCoordAttribute = TexCoordAttribute; - var ColorAttribute = (function (_super) { - __extends(ColorAttribute, _super); - function ColorAttribute() { - return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; - } - return ColorAttribute; - }(VertexAttribute)); - webgl.ColorAttribute = ColorAttribute; - var Color2Attribute = (function (_super) { - __extends(Color2Attribute, _super); - function Color2Attribute() { - return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; - } - return Color2Attribute; - }(VertexAttribute)); - webgl.Color2Attribute = Color2Attribute; - var VertexAttributeType; - (function (VertexAttributeType) { - VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; - })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var Mesh = (function () { + function Mesh(context, attributes, maxVertices, maxIndices) { + this.attributes = attributes; + this.verticesLength = 0; + this.dirtyVertices = false; + this.indicesLength = 0; + this.dirtyIndices = false; + this.elementsPerVertex = 0; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.elementsPerVertex = 0; + for (var i = 0; i < attributes.length; i++) { + this.elementsPerVertex += attributes[i].numElements; + } + this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); + this.indices = new Uint16Array(maxIndices); + this.context.addRestorable(this); + } + Mesh.prototype.getAttributes = function () { return this.attributes; }; + Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; + Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; + Mesh.prototype.setVerticesLength = function (length) { + this.dirtyVertices = true; + this.verticesLength = length; + }; + Mesh.prototype.getVertices = function () { return this.vertices; }; + Mesh.prototype.maxIndices = function () { return this.indices.length; }; + Mesh.prototype.numIndices = function () { return this.indicesLength; }; + Mesh.prototype.setIndicesLength = function (length) { + this.dirtyIndices = true; + this.indicesLength = length; + }; + Mesh.prototype.getIndices = function () { return this.indices; }; + ; + Mesh.prototype.getVertexSizeInFloats = function () { + var size = 0; + for (var i = 0; i < this.attributes.length; i++) { + var attribute = this.attributes[i]; + size += attribute.numElements; + } + return size; + }; + Mesh.prototype.setVertices = function (vertices) { + this.dirtyVertices = true; + if (vertices.length > this.vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this.vertices.set(vertices, 0); + this.verticesLength = vertices.length; + }; + Mesh.prototype.setIndices = function (indices) { + this.dirtyIndices = true; + if (indices.length > this.indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this.indices.set(indices, 0); + this.indicesLength = indices.length; + }; + Mesh.prototype.draw = function (shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); + }; + Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { + var gl = this.context.gl; + if (this.dirtyVertices || this.dirtyIndices) + this.update(); + this.bind(shader); + if (this.indicesLength > 0) { + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + } + else { + gl.drawArrays(primitiveType, offset, count); + } + this.unbind(shader); + }; + Mesh.prototype.bind = function (shader) { + var gl = this.context.gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); + var offset = 0; + for (var i = 0; i < this.attributes.length; i++) { + var attrib = this.attributes[i]; + var location_1 = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location_1); + gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this.indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); + }; + Mesh.prototype.unbind = function (shader) { + var gl = this.context.gl; + for (var i = 0; i < this.attributes.length; i++) { + var attrib = this.attributes[i]; + var location_2 = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location_2); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this.indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + }; + Mesh.prototype.update = function () { + var gl = this.context.gl; + if (this.dirtyVertices) { + if (!this.verticesBuffer) { + this.verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); + this.dirtyVertices = false; + } + if (this.dirtyIndices) { + if (!this.indicesBuffer) { + this.indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); + this.dirtyIndices = false; + } + }; + Mesh.prototype.restore = function () { + this.verticesBuffer = null; + this.indicesBuffer = null; + this.update(); + }; + Mesh.prototype.dispose = function () { + this.context.removeRestorable(this); + var gl = this.context.gl; + gl.deleteBuffer(this.verticesBuffer); + gl.deleteBuffer(this.indicesBuffer); + }; + return Mesh; + }()); + webgl.Mesh = Mesh; + var VertexAttribute = (function () { + function VertexAttribute(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + return VertexAttribute; + }()); + webgl.VertexAttribute = VertexAttribute; + var Position2Attribute = (function (_super) { + __extends(Position2Attribute, _super); + function Position2Attribute() { + return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; + } + return Position2Attribute; + }(VertexAttribute)); + webgl.Position2Attribute = Position2Attribute; + var Position3Attribute = (function (_super) { + __extends(Position3Attribute, _super); + function Position3Attribute() { + return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; + } + return Position3Attribute; + }(VertexAttribute)); + webgl.Position3Attribute = Position3Attribute; + var TexCoordAttribute = (function (_super) { + __extends(TexCoordAttribute, _super); + function TexCoordAttribute(unit) { + if (unit === void 0) { unit = 0; } + return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; + } + return TexCoordAttribute; + }(VertexAttribute)); + webgl.TexCoordAttribute = TexCoordAttribute; + var ColorAttribute = (function (_super) { + __extends(ColorAttribute, _super); + function ColorAttribute() { + return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; + } + return ColorAttribute; + }(VertexAttribute)); + webgl.ColorAttribute = ColorAttribute; + var Color2Attribute = (function (_super) { + __extends(Color2Attribute, _super); + function Color2Attribute() { + return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; + } + return Color2Attribute; + }(VertexAttribute)); + webgl.Color2Attribute = Color2Attribute; + var VertexAttributeType; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var PolygonBatcher = (function () { - function PolygonBatcher(context, twoColorTint, maxVertices) { - if (twoColorTint === void 0) { twoColorTint = true; } - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shader = null; - this.lastTexture = null; - this.verticesLength = 0; - this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - var attributes = twoColorTint ? - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; - this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); - this.srcBlend = this.context.gl.SRC_ALPHA; - this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; - } - PolygonBatcher.prototype.begin = function (shader) { - var gl = this.context.gl; - if (this.isDrawing) - throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); - this.drawCalls = 0; - this.shader = shader; - this.lastTexture = null; - this.isDrawing = true; - gl.enable(gl.BLEND); - gl.blendFunc(this.srcBlend, this.dstBlend); - }; - PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { - var gl = this.context.gl; - this.srcBlend = srcBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - gl.blendFunc(this.srcBlend, this.dstBlend); - } - }; - PolygonBatcher.prototype.draw = function (texture, vertices, indices) { - if (texture != this.lastTexture) { - this.flush(); - this.lastTexture = texture; - } - else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || - this.indicesLength + indices.length > this.mesh.getIndices().length) { - this.flush(); - } - var indexStart = this.mesh.numVertices(); - this.mesh.getVertices().set(vertices, this.verticesLength); - this.verticesLength += vertices.length; - this.mesh.setVerticesLength(this.verticesLength); - var indicesArray = this.mesh.getIndices(); - for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indices.length; - this.mesh.setIndicesLength(this.indicesLength); - }; - PolygonBatcher.prototype.flush = function () { - var gl = this.context.gl; - if (this.verticesLength == 0) - return; - this.lastTexture.bind(); - this.mesh.draw(this.shader, gl.TRIANGLES); - this.verticesLength = 0; - this.indicesLength = 0; - this.mesh.setVerticesLength(0); - this.mesh.setIndicesLength(0); - this.drawCalls++; - }; - PolygonBatcher.prototype.end = function () { - var gl = this.context.gl; - if (!this.isDrawing) - throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); - if (this.verticesLength > 0 || this.indicesLength > 0) - this.flush(); - this.shader = null; - this.lastTexture = null; - this.isDrawing = false; - gl.disable(gl.BLEND); - }; - PolygonBatcher.prototype.getDrawCalls = function () { return this.drawCalls; }; - PolygonBatcher.prototype.dispose = function () { - this.mesh.dispose(); - }; - return PolygonBatcher; - }()); - webgl.PolygonBatcher = PolygonBatcher; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var PolygonBatcher = (function () { + function PolygonBatcher(context, twoColorTint, maxVertices) { + if (twoColorTint === void 0) { twoColorTint = true; } + if (maxVertices === void 0) { maxVertices = 10920; } + this.isDrawing = false; + this.shader = null; + this.lastTexture = null; + this.verticesLength = 0; + this.indicesLength = 0; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + var attributes = twoColorTint ? + [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : + [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; + this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); + this.srcBlend = this.context.gl.SRC_ALPHA; + this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; + } + PolygonBatcher.prototype.begin = function (shader) { + var gl = this.context.gl; + if (this.isDrawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this.drawCalls = 0; + this.shader = shader; + this.lastTexture = null; + this.isDrawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this.srcBlend, this.dstBlend); + }; + PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this.context.gl; + this.srcBlend = srcBlend; + this.dstBlend = dstBlend; + if (this.isDrawing) { + this.flush(); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + }; + PolygonBatcher.prototype.draw = function (texture, vertices, indices) { + if (texture != this.lastTexture) { + this.flush(); + this.lastTexture = texture; + } + else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || + this.indicesLength + indices.length > this.mesh.getIndices().length) { + this.flush(); + } + var indexStart = this.mesh.numVertices(); + this.mesh.getVertices().set(vertices, this.verticesLength); + this.verticesLength += vertices.length; + this.mesh.setVerticesLength(this.verticesLength); + var indicesArray = this.mesh.getIndices(); + for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this.indicesLength += indices.length; + this.mesh.setIndicesLength(this.indicesLength); + }; + PolygonBatcher.prototype.flush = function () { + var gl = this.context.gl; + if (this.verticesLength == 0) + return; + this.lastTexture.bind(); + this.mesh.draw(this.shader, gl.TRIANGLES); + this.verticesLength = 0; + this.indicesLength = 0; + this.mesh.setVerticesLength(0); + this.mesh.setIndicesLength(0); + this.drawCalls++; + }; + PolygonBatcher.prototype.end = function () { + var gl = this.context.gl; + if (!this.isDrawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this.verticesLength > 0 || this.indicesLength > 0) + this.flush(); + this.shader = null; + this.lastTexture = null; + this.isDrawing = false; + gl.disable(gl.BLEND); + }; + PolygonBatcher.prototype.getDrawCalls = function () { return this.drawCalls; }; + PolygonBatcher.prototype.dispose = function () { + this.mesh.dispose(); + }; + return PolygonBatcher; + }()); + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var SceneRenderer = (function () { - function SceneRenderer(canvas, context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.twoColorTint = false; - this.activeRenderer = null; - this.QUAD = [ - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - ]; - this.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - this.WHITE = new spine.Color(1, 1, 1, 1); - this.canvas = canvas; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.twoColorTint = twoColorTint; - this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); - this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); - this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); - this.shapesShader = webgl.Shader.newColored(this.context); - this.shapes = new webgl.ShapeRenderer(this.context); - this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); - this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); - } - SceneRenderer.prototype.begin = function () { - this.camera.update(); - this.enableRenderer(this.batcher); - }; - SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - this.enableRenderer(this.batcher); - this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonRenderer.draw(this.batcher, skeleton); - }; - SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (ignoredBones === void 0) { ignoredBones = null; } - this.enableRenderer(this.shapes); - this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); - }; - SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color, premultipliedAlpha) { - if (color === void 0) { color = null; } - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var worldOriginX = x + pivotX; - var worldOriginY = y + pivotY; - var fx = -pivotX; - var fy = -pivotY; - var fx2 = width - pivotX; - var fy2 = height - pivotY; - var p1x = fx; - var p1y = fy; - var p2x = fx; - var p2y = fy2; - var p3x = fx2; - var p3y = fy2; - var p4x = fx2; - var p4y = fy; - var x1 = 0; - var y1 = 0; - var x2 = 0; - var y2 = 0; - var x3 = 0; - var y3 = 0; - var x4 = 0; - var y4 = 0; - if (angle != 0) { - var cos = spine.MathUtils.cosDeg(angle); - var sin = spine.MathUtils.sinDeg(angle); - x1 = cos * p1x - sin * p1y; - y1 = sin * p1x + cos * p1y; - x4 = cos * p2x - sin * p2y; - y4 = sin * p2x + cos * p2y; - x3 = cos * p3x - sin * p3y; - y3 = sin * p3x + cos * p3y; - x2 = x3 + (x1 - x4); - y2 = y3 + (y1 - y4); - } - else { - x1 = p1x; - y1 = p1y; - x4 = p2x; - y4 = p2y; - x3 = p3x; - y3 = p3y; - x2 = p4x; - y2 = p4y; - } - x1 += worldOriginX; - y1 += worldOriginY; - x2 += worldOriginX; - y2 += worldOriginY; - x3 += worldOriginX; - y3 += worldOriginY; - x4 += worldOriginX; - y4 += worldOriginY; - var i = 0; - quad[i++] = x1; - quad[i++] = y1; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x2; - quad[i++] = y2; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x3; - quad[i++] = y3; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x4; - quad[i++] = y4; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color, premultipliedAlpha) { - if (color === void 0) { color = null; } - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(region.texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - this.enableRenderer(this.shapes); - this.shapes.line(x, y, x2, y2, color); - }; - SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.enableRenderer(this.shapes); - this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); - }; - SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.enableRenderer(this.shapes); - this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); - }; - SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rect(filled, x, y, width, height, color); - }; - SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); - }; - SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.polygon(polygonVertices, offset, count, color); - }; - SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - this.enableRenderer(this.shapes); - this.shapes.circle(filled, x, y, radius, color, segments); - }; - SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); - }; - SceneRenderer.prototype.end = function () { - if (this.activeRenderer === this.batcher) - this.batcher.end(); - else if (this.activeRenderer === this.shapes) - this.shapes.end(); - this.activeRenderer = null; - }; - SceneRenderer.prototype.resize = function (resizeMode) { - var canvas = this.canvas; - var w = canvas.clientWidth; - var h = canvas.clientHeight; - if (canvas.width != w || canvas.height != h) { - canvas.width = w; - canvas.height = h; - } - this.context.gl.viewport(0, 0, canvas.width, canvas.height); - if (resizeMode === ResizeMode.Stretch) { - } - else if (resizeMode === ResizeMode.Expand) { - this.camera.setViewport(w, h); - } - else if (resizeMode === ResizeMode.Fit) { - var sourceWidth = canvas.width, sourceHeight = canvas.height; - var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; - var targetRatio = targetHeight / targetWidth; - var sourceRatio = sourceHeight / sourceWidth; - var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; - this.camera.viewportWidth = sourceWidth * scale; - this.camera.viewportHeight = sourceHeight * scale; - } - this.camera.update(); - }; - SceneRenderer.prototype.enableRenderer = function (renderer) { - if (this.activeRenderer === renderer) - return; - this.end(); - if (renderer instanceof webgl.PolygonBatcher) { - this.batcherShader.bind(); - this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.batcherShader.setUniformi("u_texture", 0); - this.batcher.begin(this.batcherShader); - this.activeRenderer = this.batcher; - } - else if (renderer instanceof webgl.ShapeRenderer) { - this.shapesShader.bind(); - this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.shapes.begin(this.shapesShader); - this.activeRenderer = this.shapes; - } - else { - this.activeRenderer = this.skeletonDebugRenderer; - } - }; - SceneRenderer.prototype.dispose = function () { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - }; - return SceneRenderer; - }()); - webgl.SceneRenderer = SceneRenderer; - var ResizeMode; - (function (ResizeMode) { - ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; - ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; - ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; - })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var SceneRenderer = (function () { + function SceneRenderer(canvas, context, twoColorTint) { + if (twoColorTint === void 0) { twoColorTint = true; } + this.twoColorTint = false; + this.activeRenderer = null; + this.QUAD = [ + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + ]; + this.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + this.WHITE = new spine.Color(1, 1, 1, 1); + this.canvas = canvas; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.twoColorTint = twoColorTint; + this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); + this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); + this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); + this.shapesShader = webgl.Shader.newColored(this.context); + this.shapes = new webgl.ShapeRenderer(this.context); + this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); + this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); + } + SceneRenderer.prototype.begin = function () { + this.camera.update(); + this.enableRenderer(this.batcher); + }; + SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + this.enableRenderer(this.batcher); + this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + this.skeletonRenderer.draw(this.batcher, skeleton); + }; + SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + if (ignoredBones === void 0) { ignoredBones = null; } + this.enableRenderer(this.shapes); + this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; + this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); + }; + SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { + if (color === void 0) { color = null; } + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + var quad = this.QUAD; + var i = 0; + quad[i++] = x; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); + }; + SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color, premultipliedAlpha) { + if (color === void 0) { color = null; } + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + var quad = this.QUAD; + var worldOriginX = x + pivotX; + var worldOriginY = y + pivotY; + var fx = -pivotX; + var fy = -pivotY; + var fx2 = width - pivotX; + var fy2 = height - pivotY; + var p1x = fx; + var p1y = fy; + var p2x = fx; + var p2y = fy2; + var p3x = fx2; + var p3y = fy2; + var p4x = fx2; + var p4y = fy; + var x1 = 0; + var y1 = 0; + var x2 = 0; + var y2 = 0; + var x3 = 0; + var y3 = 0; + var x4 = 0; + var y4 = 0; + if (angle != 0) { + var cos = spine.MathUtils.cosDeg(angle); + var sin = spine.MathUtils.sinDeg(angle); + x1 = cos * p1x - sin * p1y; + y1 = sin * p1x + cos * p1y; + x4 = cos * p2x - sin * p2y; + y4 = sin * p2x + cos * p2y; + x3 = cos * p3x - sin * p3y; + y3 = sin * p3x + cos * p3y; + x2 = x3 + (x1 - x4); + y2 = y3 + (y1 - y4); + } + else { + x1 = p1x; + y1 = p1y; + x4 = p2x; + y4 = p2y; + x3 = p3x; + y3 = p3y; + x2 = p4x; + y2 = p4y; + } + x1 += worldOriginX; + y1 += worldOriginY; + x2 += worldOriginX; + y2 += worldOriginY; + x3 += worldOriginX; + y3 += worldOriginY; + x4 += worldOriginX; + y4 += worldOriginY; + var i = 0; + quad[i++] = x1; + quad[i++] = y1; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x2; + quad[i++] = y2; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x3; + quad[i++] = y3; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x4; + quad[i++] = y4; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); + }; + SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color, premultipliedAlpha) { + if (color === void 0) { color = null; } + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + var quad = this.QUAD; + var i = 0; + quad[i++] = x; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u; + quad[i++] = region.v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u2; + quad[i++] = region.v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u2; + quad[i++] = region.v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u; + quad[i++] = region.v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(region.texture, quad, this.QUAD_TRIANGLES); + }; + SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { + if (color === void 0) { color = null; } + if (color2 === void 0) { color2 = null; } + this.enableRenderer(this.shapes); + this.shapes.line(x, y, x2, y2, color); + }; + SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { + if (color === void 0) { color = null; } + if (color2 === void 0) { color2 = null; } + if (color3 === void 0) { color3 = null; } + this.enableRenderer(this.shapes); + this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); + }; + SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { + if (color === void 0) { color = null; } + if (color2 === void 0) { color2 = null; } + if (color3 === void 0) { color3 = null; } + if (color4 === void 0) { color4 = null; } + this.enableRenderer(this.shapes); + this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); + }; + SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { + if (color === void 0) { color = null; } + this.enableRenderer(this.shapes); + this.shapes.rect(filled, x, y, width, height, color); + }; + SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { + if (color === void 0) { color = null; } + this.enableRenderer(this.shapes); + this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); + }; + SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { + if (color === void 0) { color = null; } + this.enableRenderer(this.shapes); + this.shapes.polygon(polygonVertices, offset, count, color); + }; + SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { + if (color === void 0) { color = null; } + if (segments === void 0) { segments = 0; } + this.enableRenderer(this.shapes); + this.shapes.circle(filled, x, y, radius, color, segments); + }; + SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { + if (color === void 0) { color = null; } + this.enableRenderer(this.shapes); + this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); + }; + SceneRenderer.prototype.end = function () { + if (this.activeRenderer === this.batcher) + this.batcher.end(); + else if (this.activeRenderer === this.shapes) + this.shapes.end(); + this.activeRenderer = null; + }; + SceneRenderer.prototype.resize = function (resizeMode) { + var canvas = this.canvas; + var w = canvas.clientWidth; + var h = canvas.clientHeight; + if (canvas.width != w || canvas.height != h) { + canvas.width = w; + canvas.height = h; + } + this.context.gl.viewport(0, 0, canvas.width, canvas.height); + if (resizeMode === ResizeMode.Stretch) { + } + else if (resizeMode === ResizeMode.Expand) { + this.camera.setViewport(w, h); + } + else if (resizeMode === ResizeMode.Fit) { + var sourceWidth = canvas.width, sourceHeight = canvas.height; + var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; + var targetRatio = targetHeight / targetWidth; + var sourceRatio = sourceHeight / sourceWidth; + var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; + this.camera.viewportWidth = sourceWidth * scale; + this.camera.viewportHeight = sourceHeight * scale; + } + this.camera.update(); + }; + SceneRenderer.prototype.enableRenderer = function (renderer) { + if (this.activeRenderer === renderer) + return; + this.end(); + if (renderer instanceof webgl.PolygonBatcher) { + this.batcherShader.bind(); + this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); + this.batcherShader.setUniformi("u_texture", 0); + this.batcher.begin(this.batcherShader); + this.activeRenderer = this.batcher; + } + else if (renderer instanceof webgl.ShapeRenderer) { + this.shapesShader.bind(); + this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); + this.shapes.begin(this.shapesShader); + this.activeRenderer = this.shapes; + } + else { + this.activeRenderer = this.skeletonDebugRenderer; + } + }; + SceneRenderer.prototype.dispose = function () { + this.batcher.dispose(); + this.batcherShader.dispose(); + this.shapes.dispose(); + this.shapesShader.dispose(); + this.skeletonDebugRenderer.dispose(); + }; + return SceneRenderer; + }()); + webgl.SceneRenderer = SceneRenderer; + var ResizeMode; + (function (ResizeMode) { + ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; + ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; + ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; + })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var Shader = (function () { - function Shader(context, vertexShader, fragmentShader) { - this.vertexShader = vertexShader; - this.fragmentShader = fragmentShader; - this.vs = null; - this.fs = null; - this.program = null; - this.tmp2x2 = new Float32Array(2 * 2); - this.tmp3x3 = new Float32Array(3 * 3); - this.tmp4x4 = new Float32Array(4 * 4); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.context.addRestorable(this); - this.compile(); - } - Shader.prototype.getProgram = function () { return this.program; }; - Shader.prototype.getVertexShader = function () { return this.vertexShader; }; - Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; - Shader.prototype.compile = function () { - var gl = this.context.gl; - try { - this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); - this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); - this.program = this.compileProgram(this.vs, this.fs); - } - catch (e) { - this.dispose(); - throw e; - } - }; - Shader.prototype.compileShader = function (type, source) { - var gl = this.context.gl; - var shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); - gl.deleteShader(shader); - if (!gl.isContextLost()) - throw new Error(error); - } - return shader; - }; - Shader.prototype.compileProgram = function (vs, fs) { - var gl = this.context.gl; - var program = gl.createProgram(); - gl.attachShader(program, vs); - gl.attachShader(program, fs); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); - gl.deleteProgram(program); - if (!gl.isContextLost()) - throw new Error(error); - } - return program; - }; - Shader.prototype.restore = function () { - this.compile(); - }; - Shader.prototype.bind = function () { - this.context.gl.useProgram(this.program); - }; - Shader.prototype.unbind = function () { - this.context.gl.useProgram(null); - }; - Shader.prototype.setUniformi = function (uniform, value) { - this.context.gl.uniform1i(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniformf = function (uniform, value) { - this.context.gl.uniform1f(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniform2f = function (uniform, value, value2) { - this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); - }; - Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { - this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); - }; - Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { - this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); - }; - Shader.prototype.setUniform2x2f = function (uniform, value) { - var gl = this.context.gl; - this.tmp2x2.set(value); - gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); - }; - Shader.prototype.setUniform3x3f = function (uniform, value) { - var gl = this.context.gl; - this.tmp3x3.set(value); - gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); - }; - Shader.prototype.setUniform4x4f = function (uniform, value) { - var gl = this.context.gl; - this.tmp4x4.set(value); - gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); - }; - Shader.prototype.getUniformLocation = function (uniform) { - var gl = this.context.gl; - var location = gl.getUniformLocation(this.program, uniform); - if (!location && !gl.isContextLost()) - throw new Error("Couldn't find location for uniform " + uniform); - return location; - }; - Shader.prototype.getAttributeLocation = function (attribute) { - var gl = this.context.gl; - var location = gl.getAttribLocation(this.program, attribute); - if (location == -1 && !gl.isContextLost()) - throw new Error("Couldn't find location for attribute " + attribute); - return location; - }; - Shader.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - if (this.vs) { - gl.deleteShader(this.vs); - this.vs = null; - } - if (this.fs) { - gl.deleteShader(this.fs); - this.fs = null; - } - if (this.program) { - gl.deleteProgram(this.program); - this.program = null; - } - }; - Shader.newColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newTwoColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tfloat alpha = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.a = alpha;\n\t\t\t\t\tgl_FragColor.rgb = (1.0 - texColor.rgb) * v_dark.rgb * alpha + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newColored = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - return Shader; - }()); - Shader.MVP_MATRIX = "u_projTrans"; - Shader.POSITION = "a_position"; - Shader.COLOR = "a_color"; - Shader.COLOR2 = "a_color2"; - Shader.TEXCOORDS = "a_texCoords"; - Shader.SAMPLER = "u_texture"; - webgl.Shader = Shader; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var Shader = (function () { + function Shader(context, vertexShader, fragmentShader) { + this.vertexShader = vertexShader; + this.fragmentShader = fragmentShader; + this.vs = null; + this.fs = null; + this.program = null; + this.tmp2x2 = new Float32Array(2 * 2); + this.tmp3x3 = new Float32Array(3 * 3); + this.tmp4x4 = new Float32Array(4 * 4); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.context.addRestorable(this); + this.compile(); + } + Shader.prototype.getProgram = function () { return this.program; }; + Shader.prototype.getVertexShader = function () { return this.vertexShader; }; + Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; + Shader.prototype.compile = function () { + var gl = this.context.gl; + try { + this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); + this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); + this.program = this.compileProgram(this.vs, this.fs); + } + catch (e) { + this.dispose(); + throw e; + } + }; + Shader.prototype.compileShader = function (type, source) { + var gl = this.context.gl; + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + if (!gl.isContextLost()) + throw new Error(error); + } + return shader; + }; + Shader.prototype.compileProgram = function (vs, fs) { + var gl = this.context.gl; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + if (!gl.isContextLost()) + throw new Error(error); + } + return program; + }; + Shader.prototype.restore = function () { + this.compile(); + }; + Shader.prototype.bind = function () { + this.context.gl.useProgram(this.program); + }; + Shader.prototype.unbind = function () { + this.context.gl.useProgram(null); + }; + Shader.prototype.setUniformi = function (uniform, value) { + this.context.gl.uniform1i(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniformf = function (uniform, value) { + this.context.gl.uniform1f(this.getUniformLocation(uniform), value); + }; + Shader.prototype.setUniform2f = function (uniform, value, value2) { + this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); + }; + Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { + this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + }; + Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { + this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + }; + Shader.prototype.setUniform2x2f = function (uniform, value) { + var gl = this.context.gl; + this.tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); + }; + Shader.prototype.setUniform3x3f = function (uniform, value) { + var gl = this.context.gl; + this.tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); + }; + Shader.prototype.setUniform4x4f = function (uniform, value) { + var gl = this.context.gl; + this.tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); + }; + Shader.prototype.getUniformLocation = function (uniform) { + var gl = this.context.gl; + var location = gl.getUniformLocation(this.program, uniform); + if (!location && !gl.isContextLost()) + throw new Error("Couldn't find location for uniform " + uniform); + return location; + }; + Shader.prototype.getAttributeLocation = function (attribute) { + var gl = this.context.gl; + var location = gl.getAttribLocation(this.program, attribute); + if (location == -1 && !gl.isContextLost()) + throw new Error("Couldn't find location for attribute " + attribute); + return location; + }; + Shader.prototype.dispose = function () { + this.context.removeRestorable(this); + var gl = this.context.gl; + if (this.vs) { + gl.deleteShader(this.vs); + this.vs = null; + } + if (this.fs) { + gl.deleteShader(this.fs); + this.fs = null; + } + if (this.program) { + gl.deleteProgram(this.program); + this.program = null; + } + }; + Shader.newColoredTextured = function (context) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; + return new Shader(context, vs, fs); + }; + Shader.newTwoColoredTextured = function (context) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tfloat alpha = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.a = alpha;\n\t\t\t\t\tgl_FragColor.rgb = (1.0 - texColor.rgb) * v_dark.rgb * alpha + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; + return new Shader(context, vs, fs); + }; + Shader.newColored = function (context) { + var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; + var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; + return new Shader(context, vs, fs); + }; + return Shader; + }()); + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.COLOR2 = "a_color2"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var ShapeRenderer = (function () { - function ShapeRenderer(context, maxVertices) { - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shapeType = ShapeType.Filled; - this.color = new spine.Color(1, 1, 1, 1); - this.vertexIndex = 0; - this.tmp = new spine.Vector2(); - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); - this.srcBlend = this.context.gl.SRC_ALPHA; - this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; - } - ShapeRenderer.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("ShapeRenderer.begin() has already been called"); - this.shader = shader; - this.vertexIndex = 0; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFunc(this.srcBlend, this.dstBlend); - }; - ShapeRenderer.prototype.setBlendMode = function (srcBlend, dstBlend) { - var gl = this.context.gl; - this.srcBlend = srcBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - gl.blendFunc(this.srcBlend, this.dstBlend); - } - }; - ShapeRenderer.prototype.setColor = function (color) { - this.color.setFromColor(color); - }; - ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { - this.color.set(r, g, b, a); - }; - ShapeRenderer.prototype.point = function (x, y, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Point, 1); - if (color === null) - color = this.color; - this.vertex(x, y, color); - }; - ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, 2); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - this.vertex(x, y, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color); - this.vertex(x3, y3, color2); - this.vertex(x3, y3, color); - this.vertex(x, y, color2); - } - }; - ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (color4 === null) - color4 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - }; - ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); - }; - ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) - color = this.color; - var t = this.tmp.set(y2 - y1, x1 - x2); - t.normalize(); - width *= 0.5; - var tx = t.x * width; - var ty = t.y * width; - if (!filled) { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - else { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - }; - ShapeRenderer.prototype.x = function (x, y, size) { - this.line(x - size, y - size, x + size, y + size); - this.line(x - size, y + size, x + size, y - size); - }; - ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - if (count < 3) - throw new Error("Polygon must contain at least 3 vertices"); - this.check(ShapeType.Line, count * 2); - if (color === null) - color = this.color; - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - offset <<= 1; - count <<= 1; - var firstX = polygonVertices[offset]; - var firstY = polygonVertices[offset + 1]; - var last = offset + count; - for (var i = offset, n = offset + count - 2; i < n; i += 2) { - var x1 = polygonVertices[i]; - var y1 = polygonVertices[i + 1]; - var x2 = 0; - var y2 = 0; - if (i + 2 >= last) { - x2 = firstX; - y2 = firstY; - } - else { - x2 = polygonVertices[i + 2]; - y2 = polygonVertices[i + 3]; - } - this.vertex(x1, y1, color); - this.vertex(x2, y2, color); - } - }; - ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - if (segments === 0) - segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); - if (segments <= 0) - throw new Error("segments must be > 0."); - if (color === null) - color = this.color; - var angle = 2 * spine.MathUtils.PI / segments; - var cos = Math.cos(angle); - var sin = Math.sin(angle); - var cx = radius, cy = 0; - if (!filled) { - this.check(ShapeType.Line, segments * 2 + 2); - for (var i = 0; i < segments; i++) { - this.vertex(x + cx, y + cy, color); - var temp_1 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_1 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x + cx, y + cy, color); - } - else { - this.check(ShapeType.Filled, segments * 3 + 3); - segments--; - for (var i = 0; i < segments; i++) { - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - var temp_2 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_2 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - } - var temp = cx; - cx = radius; - cy = 0; - this.vertex(x + cx, y + cy, color); - }; - ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) - color = this.color; - var subdiv_step = 1 / segments; - var subdiv_step2 = subdiv_step * subdiv_step; - var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; - var pre1 = 3 * subdiv_step; - var pre2 = 3 * subdiv_step2; - var pre4 = 6 * subdiv_step2; - var pre5 = 6 * subdiv_step3; - var tmp1x = x1 - cx1 * 2 + cx2; - var tmp1y = y1 - cy1 * 2 + cy2; - var tmp2x = (cx1 - cx2) * 3 - x1 + x2; - var tmp2y = (cy1 - cy2) * 3 - y1 + y2; - var fx = x1; - var fy = y1; - var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - var ddfx = tmp1x * pre4 + tmp2x * pre5; - var ddfy = tmp1y * pre4 + tmp2y * pre5; - var dddfx = tmp2x * pre5; - var dddfy = tmp2y * pre5; - while (segments-- > 0) { - this.vertex(fx, fy, color); - fx += dfx; - fy += dfy; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - this.vertex(fx, fy, color); - } - this.vertex(fx, fy, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.vertex = function (x, y, color) { - var idx = this.vertexIndex; - var vertices = this.mesh.getVertices(); - vertices[idx++] = x; - vertices[idx++] = y; - vertices[idx++] = color.r; - vertices[idx++] = color.g; - vertices[idx++] = color.b; - vertices[idx++] = color.a; - this.vertexIndex = idx; - }; - ShapeRenderer.prototype.end = function () { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - this.flush(); - this.context.gl.disable(this.context.gl.BLEND); - this.isDrawing = false; - }; - ShapeRenderer.prototype.flush = function () { - if (this.vertexIndex == 0) - return; - this.mesh.setVerticesLength(this.vertexIndex); - this.mesh.draw(this.shader, this.shapeType); - this.vertexIndex = 0; - }; - ShapeRenderer.prototype.check = function (shapeType, numVertices) { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - if (this.shapeType == shapeType) { - if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) - this.flush(); - else - return; - } - else { - this.flush(); - this.shapeType = shapeType; - } - }; - ShapeRenderer.prototype.dispose = function () { - this.mesh.dispose(); - }; - return ShapeRenderer; - }()); - webgl.ShapeRenderer = ShapeRenderer; - var ShapeType; - (function (ShapeType) { - ShapeType[ShapeType["Point"] = 0] = "Point"; - ShapeType[ShapeType["Line"] = 1] = "Line"; - ShapeType[ShapeType["Filled"] = 4] = "Filled"; - })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var ShapeRenderer = (function () { + function ShapeRenderer(context, maxVertices) { + if (maxVertices === void 0) { maxVertices = 10920; } + this.isDrawing = false; + this.shapeType = ShapeType.Filled; + this.color = new spine.Color(1, 1, 1, 1); + this.vertexIndex = 0; + this.tmp = new spine.Vector2(); + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); + this.srcBlend = this.context.gl.SRC_ALPHA; + this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; + } + ShapeRenderer.prototype.begin = function (shader) { + if (this.isDrawing) + throw new Error("ShapeRenderer.begin() has already been called"); + this.shader = shader; + this.vertexIndex = 0; + this.isDrawing = true; + var gl = this.context.gl; + gl.enable(gl.BLEND); + gl.blendFunc(this.srcBlend, this.dstBlend); + }; + ShapeRenderer.prototype.setBlendMode = function (srcBlend, dstBlend) { + var gl = this.context.gl; + this.srcBlend = srcBlend; + this.dstBlend = dstBlend; + if (this.isDrawing) { + this.flush(); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + }; + ShapeRenderer.prototype.setColor = function (color) { + this.color.setFromColor(color); + }; + ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { + this.color.set(r, g, b, a); + }; + ShapeRenderer.prototype.point = function (x, y, color) { + if (color === void 0) { color = null; } + this.check(ShapeType.Point, 1); + if (color === null) + color = this.color; + this.vertex(x, y, color); + }; + ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { + if (color === void 0) { color = null; } + this.check(ShapeType.Line, 2); + var vertices = this.mesh.getVertices(); + var idx = this.vertexIndex; + if (color === null) + color = this.color; + this.vertex(x, y, color); + this.vertex(x2, y2, color); + }; + ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { + if (color === void 0) { color = null; } + if (color2 === void 0) { color2 = null; } + if (color3 === void 0) { color3 = null; } + this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); + var vertices = this.mesh.getVertices(); + var idx = this.vertexIndex; + if (color === null) + color = this.color; + if (color2 === null) + color2 = this.color; + if (color3 === null) + color3 = this.color; + if (filled) { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + } + else { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x2, y2, color); + this.vertex(x3, y3, color2); + this.vertex(x3, y3, color); + this.vertex(x, y, color2); + } + }; + ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { + if (color === void 0) { color = null; } + if (color2 === void 0) { color2 = null; } + if (color3 === void 0) { color3 = null; } + if (color4 === void 0) { color4 = null; } + this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); + var vertices = this.mesh.getVertices(); + var idx = this.vertexIndex; + if (color === null) + color = this.color; + if (color2 === null) + color2 = this.color; + if (color3 === null) + color3 = this.color; + if (color4 === null) + color4 = this.color; + if (filled) { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + this.vertex(x3, y3, color3); + this.vertex(x4, y4, color4); + this.vertex(x, y, color); + } + else { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + this.vertex(x3, y3, color3); + this.vertex(x4, y4, color4); + this.vertex(x4, y4, color4); + this.vertex(x, y, color); + } + }; + ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { + if (color === void 0) { color = null; } + this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); + }; + ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { + if (color === void 0) { color = null; } + this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); + if (color === null) + color = this.color; + var t = this.tmp.set(y2 - y1, x1 - x2); + t.normalize(); + width *= 0.5; + var tx = t.x * width; + var ty = t.y * width; + if (!filled) { + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x1 - tx, y1 - ty, color); + } + else { + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + } + }; + ShapeRenderer.prototype.x = function (x, y, size) { + this.line(x - size, y - size, x + size, y + size); + this.line(x - size, y + size, x + size, y - size); + }; + ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { + if (color === void 0) { color = null; } + if (count < 3) + throw new Error("Polygon must contain at least 3 vertices"); + this.check(ShapeType.Line, count * 2); + if (color === null) + color = this.color; + var vertices = this.mesh.getVertices(); + var idx = this.vertexIndex; + offset <<= 1; + count <<= 1; + var firstX = polygonVertices[offset]; + var firstY = polygonVertices[offset + 1]; + var last = offset + count; + for (var i = offset, n = offset + count - 2; i < n; i += 2) { + var x1 = polygonVertices[i]; + var y1 = polygonVertices[i + 1]; + var x2 = 0; + var y2 = 0; + if (i + 2 >= last) { + x2 = firstX; + y2 = firstY; + } + else { + x2 = polygonVertices[i + 2]; + y2 = polygonVertices[i + 3]; + } + this.vertex(x1, y1, color); + this.vertex(x2, y2, color); + } + }; + ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { + if (color === void 0) { color = null; } + if (segments === void 0) { segments = 0; } + if (segments === 0) + segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); + if (segments <= 0) + throw new Error("segments must be > 0."); + if (color === null) + color = this.color; + var angle = 2 * spine.MathUtils.PI / segments; + var cos = Math.cos(angle); + var sin = Math.sin(angle); + var cx = radius, cy = 0; + if (!filled) { + this.check(ShapeType.Line, segments * 2 + 2); + for (var i = 0; i < segments; i++) { + this.vertex(x + cx, y + cy, color); + var temp_1 = cx; + cx = cos * cx - sin * cy; + cy = sin * temp_1 + cos * cy; + this.vertex(x + cx, y + cy, color); + } + this.vertex(x + cx, y + cy, color); + } + else { + this.check(ShapeType.Filled, segments * 3 + 3); + segments--; + for (var i = 0; i < segments; i++) { + this.vertex(x, y, color); + this.vertex(x + cx, y + cy, color); + var temp_2 = cx; + cx = cos * cx - sin * cy; + cy = sin * temp_2 + cos * cy; + this.vertex(x + cx, y + cy, color); + } + this.vertex(x, y, color); + this.vertex(x + cx, y + cy, color); + } + var temp = cx; + cx = radius; + cy = 0; + this.vertex(x + cx, y + cy, color); + }; + ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { + if (color === void 0) { color = null; } + this.check(ShapeType.Line, segments * 2 + 2); + if (color === null) + color = this.color; + var subdiv_step = 1 / segments; + var subdiv_step2 = subdiv_step * subdiv_step; + var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; + var pre1 = 3 * subdiv_step; + var pre2 = 3 * subdiv_step2; + var pre4 = 6 * subdiv_step2; + var pre5 = 6 * subdiv_step3; + var tmp1x = x1 - cx1 * 2 + cx2; + var tmp1y = y1 - cy1 * 2 + cy2; + var tmp2x = (cx1 - cx2) * 3 - x1 + x2; + var tmp2y = (cy1 - cy2) * 3 - y1 + y2; + var fx = x1; + var fy = y1; + var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; + var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; + var ddfx = tmp1x * pre4 + tmp2x * pre5; + var ddfy = tmp1y * pre4 + tmp2y * pre5; + var dddfx = tmp2x * pre5; + var dddfy = tmp2y * pre5; + while (segments-- > 0) { + this.vertex(fx, fy, color); + fx += dfx; + fy += dfy; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + this.vertex(fx, fy, color); + } + this.vertex(fx, fy, color); + this.vertex(x2, y2, color); + }; + ShapeRenderer.prototype.vertex = function (x, y, color) { + var idx = this.vertexIndex; + var vertices = this.mesh.getVertices(); + vertices[idx++] = x; + vertices[idx++] = y; + vertices[idx++] = color.r; + vertices[idx++] = color.g; + vertices[idx++] = color.b; + vertices[idx++] = color.a; + this.vertexIndex = idx; + }; + ShapeRenderer.prototype.end = function () { + if (!this.isDrawing) + throw new Error("ShapeRenderer.begin() has not been called"); + this.flush(); + this.context.gl.disable(this.context.gl.BLEND); + this.isDrawing = false; + }; + ShapeRenderer.prototype.flush = function () { + if (this.vertexIndex == 0) + return; + this.mesh.setVerticesLength(this.vertexIndex); + this.mesh.draw(this.shader, this.shapeType); + this.vertexIndex = 0; + }; + ShapeRenderer.prototype.check = function (shapeType, numVertices) { + if (!this.isDrawing) + throw new Error("ShapeRenderer.begin() has not been called"); + if (this.shapeType == shapeType) { + if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) + this.flush(); + else + return; + } + else { + this.flush(); + this.shapeType = shapeType; + } + }; + ShapeRenderer.prototype.dispose = function () { + this.mesh.dispose(); + }; + return ShapeRenderer; + }()); + webgl.ShapeRenderer = ShapeRenderer; + var ShapeType; + (function (ShapeType) { + ShapeType[ShapeType["Point"] = 0] = "Point"; + ShapeType[ShapeType["Line"] = 1] = "Line"; + ShapeType[ShapeType["Filled"] = 4] = "Filled"; + })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var SkeletonDebugRenderer = (function () { - function SkeletonDebugRenderer(context) { - this.boneLineColor = new spine.Color(1, 0, 0, 1); - this.boneOriginColor = new spine.Color(0, 1, 0, 1); - this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); - this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); - this.pathColor = new spine.Color().setFromString("FF7F00"); - this.clipColor = new spine.Color(0.8, 0, 0, 2); - this.aabbColor = new spine.Color(0, 1, 0, 0.5); - this.drawBones = true; - this.drawRegionAttachments = true; - this.drawBoundingBoxes = true; - this.drawMeshHull = true; - this.drawMeshTriangles = true; - this.drawPaths = true; - this.drawSkeletonXY = false; - this.drawClipping = true; - this.premultipliedAlpha = false; - this.scale = 1; - this.boneWidth = 2; - this.bounds = new spine.SkeletonBounds(); - this.temp = new Array(); - this.vertices = spine.Utils.newFloatArray(2 * 1024); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - } - SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { - if (ignoredBones === void 0) { ignoredBones = null; } - var skeletonX = skeleton.x; - var skeletonY = skeleton.y; - var gl = this.context.gl; - var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; - shapes.setBlendMode(srcFunc, gl.ONE_MINUS_SRC_ALPHA); - var bones = skeleton.bones; - if (this.drawBones) { - shapes.setColor(this.boneLineColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - if (bone.parent == null) - continue; - var x = skeletonX + bone.data.length * bone.a + bone.worldX; - var y = skeletonY + bone.data.length * bone.c + bone.worldY; - shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); - } - if (this.drawSkeletonXY) - shapes.x(skeletonX, skeletonY, 4 * this.scale); - } - if (this.drawRegionAttachments) { - shapes.setColor(this.attachmentLineColor); - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - var vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); - shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); - shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); - shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); - shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); - } - } - } - if (this.drawMeshHull || this.drawMeshTriangles) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.MeshAttachment)) - continue; - var mesh = attachment; - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); - var triangles = mesh.triangles; - var hullLength = mesh.hullLength; - if (this.drawMeshTriangles) { - shapes.setColor(this.triangleLineColor); - for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { - var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; - shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); - } - } - if (this.drawMeshHull && hullLength > 0) { - shapes.setColor(this.attachmentLineColor); - hullLength = (hullLength >> 1) * 2; - var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; - for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - shapes.line(x, y, lastX, lastY); - lastX = x; - lastY = y; - } - } - } - } - if (this.drawBoundingBoxes) { - var bounds = this.bounds; - bounds.update(skeleton, true); - shapes.setColor(this.aabbColor); - shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); - var polygons = bounds.polygons; - var boxes = bounds.boundingBoxes; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - shapes.setColor(boxes[i].color); - shapes.polygon(polygon, 0, polygon.length); - } - } - if (this.drawPaths) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - continue; - var path = attachment; - var nn = path.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - path.computeWorldVertices(slot, 0, nn, world, 0, 2); - var color = this.pathColor; - var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; - if (path.closed) { - shapes.setColor(color); - var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; - x2 = world[nn - 4]; - y2 = world[nn - 3]; - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - } - nn -= 4; - for (var ii = 4; ii < nn; ii += 6) { - var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; - x2 = world[ii + 4]; - y2 = world[ii + 5]; - shapes.setColor(color); - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - x1 = x2; - y1 = y2; - } - } - } - if (this.drawBones) { - shapes.setColor(this.boneOriginColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); - } - } - if (this.drawClipping) { - var slots = skeleton.slots; - shapes.setColor(this.clipColor); - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.ClippingAttachment)) - continue; - var clip = attachment; - var nn = clip.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - clip.computeWorldVertices(slot, 0, nn, world, 0, 2); - for (var i_12 = 0, n_2 = world.length; i_12 < n_2; i_12 += 2) { - var x = world[i_12]; - var y = world[i_12 + 1]; - var x2 = world[(i_12 + 2) % world.length]; - var y2 = world[(i_12 + 3) % world.length]; - shapes.line(x, y, x2, y2); - } - } - } - }; - SkeletonDebugRenderer.prototype.dispose = function () { - }; - return SkeletonDebugRenderer; - }()); - SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); - SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); - webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var SkeletonDebugRenderer = (function () { + function SkeletonDebugRenderer(context) { + this.boneLineColor = new spine.Color(1, 0, 0, 1); + this.boneOriginColor = new spine.Color(0, 1, 0, 1); + this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); + this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); + this.pathColor = new spine.Color().setFromString("FF7F00"); + this.clipColor = new spine.Color(0.8, 0, 0, 2); + this.aabbColor = new spine.Color(0, 1, 0, 0.5); + this.drawBones = true; + this.drawRegionAttachments = true; + this.drawBoundingBoxes = true; + this.drawMeshHull = true; + this.drawMeshTriangles = true; + this.drawPaths = true; + this.drawSkeletonXY = false; + this.drawClipping = true; + this.premultipliedAlpha = false; + this.scale = 1; + this.boneWidth = 2; + this.bounds = new spine.SkeletonBounds(); + this.temp = new Array(); + this.vertices = spine.Utils.newFloatArray(2 * 1024); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + } + SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { + if (ignoredBones === void 0) { ignoredBones = null; } + var skeletonX = skeleton.x; + var skeletonY = skeleton.y; + var gl = this.context.gl; + var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + shapes.setBlendMode(srcFunc, gl.ONE_MINUS_SRC_ALPHA); + var bones = skeleton.bones; + if (this.drawBones) { + shapes.setColor(this.boneLineColor); + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) + continue; + if (bone.parent == null) + continue; + var x = skeletonX + bone.data.length * bone.a + bone.worldX; + var y = skeletonY + bone.data.length * bone.c + bone.worldY; + shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); + } + if (this.drawSkeletonXY) + shapes.x(skeletonX, skeletonY, 4 * this.scale); + } + if (this.drawRegionAttachments) { + shapes.setColor(this.attachmentLineColor); + var slots = skeleton.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) { + var regionAttachment = attachment; + var vertices = this.vertices; + regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); + shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); + shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); + shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); + shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); + } + } + } + if (this.drawMeshHull || this.drawMeshTriangles) { + var slots = skeleton.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (!(attachment instanceof spine.MeshAttachment)) + continue; + var mesh = attachment; + var vertices = this.vertices; + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); + var triangles = mesh.triangles; + var hullLength = mesh.hullLength; + if (this.drawMeshTriangles) { + shapes.setColor(this.triangleLineColor); + for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { + var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; + shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); + } + } + if (this.drawMeshHull && hullLength > 0) { + shapes.setColor(this.attachmentLineColor); + hullLength = (hullLength >> 1) * 2; + var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; + for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { + var x = vertices[ii], y = vertices[ii + 1]; + shapes.line(x, y, lastX, lastY); + lastX = x; + lastY = y; + } + } + } + } + if (this.drawBoundingBoxes) { + var bounds = this.bounds; + bounds.update(skeleton, true); + shapes.setColor(this.aabbColor); + shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); + var polygons = bounds.polygons; + var boxes = bounds.boundingBoxes; + for (var i = 0, n = polygons.length; i < n; i++) { + var polygon = polygons[i]; + shapes.setColor(boxes[i].color); + shapes.polygon(polygon, 0, polygon.length); + } + } + if (this.drawPaths) { + var slots = skeleton.slots; + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + continue; + var path = attachment; + var nn = path.worldVerticesLength; + var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); + path.computeWorldVertices(slot, 0, nn, world, 0, 2); + var color = this.pathColor; + var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; + if (path.closed) { + shapes.setColor(color); + var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; + x2 = world[nn - 4]; + y2 = world[nn - 3]; + shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); + shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); + shapes.line(x1, y1, cx1, cy1); + shapes.line(x2, y2, cx2, cy2); + } + nn -= 4; + for (var ii = 4; ii < nn; ii += 6) { + var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; + x2 = world[ii + 4]; + y2 = world[ii + 5]; + shapes.setColor(color); + shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); + shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); + shapes.line(x1, y1, cx1, cy1); + shapes.line(x2, y2, cx2, cy2); + x1 = x2; + y1 = y2; + } + } + } + if (this.drawBones) { + shapes.setColor(this.boneOriginColor); + for (var i = 0, n = bones.length; i < n; i++) { + var bone = bones[i]; + if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) + continue; + shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); + } + } + if (this.drawClipping) { + var slots = skeleton.slots; + shapes.setColor(this.clipColor); + for (var i = 0, n = slots.length; i < n; i++) { + var slot = slots[i]; + var attachment = slot.getAttachment(); + if (!(attachment instanceof spine.ClippingAttachment)) + continue; + var clip = attachment; + var nn = clip.worldVerticesLength; + var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); + clip.computeWorldVertices(slot, 0, nn, world, 0, 2); + for (var i_12 = 0, n_2 = world.length; i_12 < n_2; i_12 += 2) { + var x = world[i_12]; + var y = world[i_12 + 1]; + var x2 = world[(i_12 + 2) % world.length]; + var y2 = world[(i_12 + 3) % world.length]; + shapes.line(x, y, x2, y2); + } + } + } + }; + SkeletonDebugRenderer.prototype.dispose = function () { + }; + return SkeletonDebugRenderer; + }()); + SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); + SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); + webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var Renderable = (function () { - function Renderable(vertices, numVertices, numFloats) { - this.vertices = vertices; - this.numVertices = numVertices; - this.numFloats = numFloats; - } - return Renderable; - }()); - ; - var SkeletonRenderer = (function () { - function SkeletonRenderer(context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.premultipliedAlpha = false; - this.vertexEffect = null; - this.tempColor = new spine.Color(); - this.tempColor2 = new spine.Color(); - this.vertexSize = 2 + 2 + 4; - this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); - this.clipper = new spine.SkeletonClipping(); - this.temp = new spine.Vector2(); - this.temp2 = new spine.Vector2(); - this.temp3 = new spine.Color(); - this.temp4 = new spine.Color(); - this.twoColorTint = twoColorTint; - if (twoColorTint) - this.vertexSize += 4; - this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); - } - SkeletonRenderer.prototype.draw = function (batcher, skeleton) { - var clipper = this.clipper; - var premultipliedAlpha = this.premultipliedAlpha; - var twoColorTint = this.twoColorTint; - var blendMode = null; - var tempPos = this.temp; - var tempUv = this.temp2; - var tempLight = this.temp3; - var tempDark = this.temp4; - var renderable = this.renderable; - var uvs = null; - var triangles = null; - var drawOrder = skeleton.drawOrder; - var attachmentColor = null; - var skeletonColor = skeleton.color; - var vertexSize = twoColorTint ? 12 : 8; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; - var slot = drawOrder[i]; - var attachment = slot.getAttachment(); - var texture = null; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = 4; - renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.texture; - attachmentColor = region.color; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = (mesh.worldVerticesLength >> 1); - renderable.numFloats = renderable.numVertices * clippedVertexSize; - if (renderable.numFloats > renderable.vertices.length) { - renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); - triangles = mesh.triangles; - texture = mesh.region.renderObject.texture; - uvs = mesh.uvs; - attachmentColor = mesh.color; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else - continue; - if (texture != null) { - var slotColor = slot.color; - var finalColor = this.tempColor; - finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; - finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; - finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; - finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (premultipliedAlpha) { - finalColor.r *= finalColor.a; - finalColor.g *= finalColor.a; - finalColor.b *= finalColor.a; - } - var darkColor = this.tempColor2; - if (slot.darkColor == null) - darkColor.set(0, 0, 0, 1); - else - darkColor.setFromColor(slot.darkColor); - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); - } - if (clipper.isClipping()) { - clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); - var clippedVertices = new Float32Array(clipper.clippedVertices); - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - if (!twoColorTint) { - for (var v = 0, n_3 = clippedVertices.length; v < n_3; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - batcher.draw(texture, clippedVertices, clippedTriangles); - } - else { - var verts = renderable.vertices; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (var v = 0, u = 0, n_5 = renderable.numFloats; v < n_5; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.setFromColor(darkColor); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - else { - if (!twoColorTint) { - for (var v = 2, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - else { - for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - verts[v + 6] = darkColor.r; - verts[v + 7] = darkColor.g; - verts[v + 8] = darkColor.b; - verts[v + 9] = darkColor.a; - } - } - } - var view = renderable.vertices.subarray(0, renderable.numFloats); - batcher.draw(texture, view, triangles); - } - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - }; - return SkeletonRenderer; - }()); - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - webgl.SkeletonRenderer = SkeletonRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var Renderable = (function () { + function Renderable(vertices, numVertices, numFloats) { + this.vertices = vertices; + this.numVertices = numVertices; + this.numFloats = numFloats; + } + return Renderable; + }()); + ; + var SkeletonRenderer = (function () { + function SkeletonRenderer(context, twoColorTint) { + if (twoColorTint === void 0) { twoColorTint = true; } + this.premultipliedAlpha = false; + this.vertexEffect = null; + this.tempColor = new spine.Color(); + this.tempColor2 = new spine.Color(); + this.vertexSize = 2 + 2 + 4; + this.twoColorTint = false; + this.renderable = new Renderable(null, 0, 0); + this.clipper = new spine.SkeletonClipping(); + this.temp = new spine.Vector2(); + this.temp2 = new spine.Vector2(); + this.temp3 = new spine.Color(); + this.temp4 = new spine.Color(); + this.twoColorTint = twoColorTint; + if (twoColorTint) + this.vertexSize += 4; + this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); + } + SkeletonRenderer.prototype.draw = function (batcher, skeleton) { + var clipper = this.clipper; + var premultipliedAlpha = this.premultipliedAlpha; + var twoColorTint = this.twoColorTint; + var blendMode = null; + var tempPos = this.temp; + var tempUv = this.temp2; + var tempLight = this.temp3; + var tempDark = this.temp4; + var renderable = this.renderable; + var uvs = null; + var triangles = null; + var drawOrder = skeleton.drawOrder; + var attachmentColor = null; + var skeletonColor = skeleton.color; + var vertexSize = twoColorTint ? 12 : 8; + for (var i = 0, n = drawOrder.length; i < n; i++) { + var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; + var slot = drawOrder[i]; + var attachment = slot.getAttachment(); + var texture = null; + if (attachment instanceof spine.RegionAttachment) { + var region = attachment; + renderable.vertices = this.vertices; + renderable.numVertices = 4; + renderable.numFloats = clippedVertexSize << 2; + region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + uvs = region.uvs; + texture = region.region.renderObject.texture; + attachmentColor = region.color; + } + else if (attachment instanceof spine.MeshAttachment) { + var mesh = attachment; + renderable.vertices = this.vertices; + renderable.numVertices = (mesh.worldVerticesLength >> 1); + renderable.numFloats = renderable.numVertices * clippedVertexSize; + if (renderable.numFloats > renderable.vertices.length) { + renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); + } + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + uvs = mesh.uvs; + attachmentColor = mesh.color; + } + else if (attachment instanceof spine.ClippingAttachment) { + var clip = (attachment); + clipper.clipStart(slot, clip); + continue; + } + else + continue; + if (texture != null) { + var slotColor = slot.color; + var finalColor = this.tempColor; + finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; + finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; + finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; + finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; + if (premultipliedAlpha) { + finalColor.r *= finalColor.a; + finalColor.g *= finalColor.a; + finalColor.b *= finalColor.a; + } + var darkColor = this.tempColor2; + if (slot.darkColor == null) + darkColor.set(0, 0, 0, 1); + else + darkColor.setFromColor(slot.darkColor); + var slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); + } + if (clipper.isClipping()) { + clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); + var clippedVertices = new Float32Array(clipper.clippedVertices); + var clippedTriangles = clipper.clippedTriangles; + if (this.vertexEffect != null) { + var vertexEffect = this.vertexEffect; + var verts = clippedVertices; + if (!twoColorTint) { + for (var v = 0, n_3 = clippedVertices.length; v < n_3; v += vertexSize) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); + tempUv.x = verts[v + 6]; + tempUv.y = verts[v + 7]; + tempDark.set(0, 0, 0, 0); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + } + } + else { + for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); + tempUv.x = verts[v + 6]; + tempUv.y = verts[v + 7]; + tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + verts[v + 8] = tempDark.r; + verts[v + 9] = tempDark.g; + verts[v + 10] = tempDark.b; + verts[v + 11] = tempDark.a; + } + } + } + batcher.draw(texture, clippedVertices, clippedTriangles); + } + else { + var verts = renderable.vertices; + if (this.vertexEffect != null) { + var vertexEffect = this.vertexEffect; + if (!twoColorTint) { + for (var v = 0, u = 0, n_5 = renderable.numFloats; v < n_5; v += vertexSize, u += 2) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempUv.x = uvs[u]; + tempUv.y = uvs[u + 1]; + tempLight.setFromColor(finalColor); + tempDark.set(0, 0, 0, 0); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + } + } + else { + for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempUv.x = uvs[u]; + tempUv.y = uvs[u + 1]; + tempLight.setFromColor(finalColor); + tempDark.setFromColor(darkColor); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + verts[v + 8] = tempDark.r; + verts[v + 9] = tempDark.g; + verts[v + 10] = tempDark.b; + verts[v + 11] = tempDark.a; + } + } + } + else { + if (!twoColorTint) { + for (var v = 2, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { + verts[v] = finalColor.r; + verts[v + 1] = finalColor.g; + verts[v + 2] = finalColor.b; + verts[v + 3] = finalColor.a; + verts[v + 4] = uvs[u]; + verts[v + 5] = uvs[u + 1]; + } + } + else { + for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { + verts[v] = finalColor.r; + verts[v + 1] = finalColor.g; + verts[v + 2] = finalColor.b; + verts[v + 3] = finalColor.a; + verts[v + 4] = uvs[u]; + verts[v + 5] = uvs[u + 1]; + verts[v + 6] = darkColor.r; + verts[v + 7] = darkColor.g; + verts[v + 8] = darkColor.b; + verts[v + 9] = darkColor.a; + } + } + } + var view = renderable.vertices.subarray(0, renderable.numFloats); + batcher.draw(texture, view, triangles); + } + } + clipper.clipEndWithSlot(slot); + } + clipper.clipEnd(); + }; + return SkeletonRenderer; + }()); + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var Vector3 = (function () { - function Vector3(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = 0; - this.y = 0; - this.z = 0; - this.x = x; - this.y = y; - this.z = z; - } - Vector3.prototype.setFrom = function (v) { - this.x = v.x; - this.y = v.y; - this.z = v.z; - return this; - }; - Vector3.prototype.set = function (x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - }; - Vector3.prototype.add = function (v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - return this; - }; - Vector3.prototype.sub = function (v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - return this; - }; - Vector3.prototype.scale = function (s) { - this.x *= s; - this.y *= s; - this.z *= s; - return this; - }; - Vector3.prototype.normalize = function () { - var len = this.length(); - if (len == 0) - return this; - len = 1 / len; - this.x *= len; - this.y *= len; - this.z *= len; - return this; - }; - Vector3.prototype.cross = function (v) { - return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); - }; - Vector3.prototype.multiply = function (matrix) { - var l_mat = matrix.values; - return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); - }; - Vector3.prototype.project = function (matrix) { - var l_mat = matrix.values; - var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); - return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); - }; - Vector3.prototype.dot = function (v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - }; - Vector3.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }; - Vector3.prototype.distance = function (v) { - var a = v.x - this.x; - var b = v.y - this.y; - var c = v.z - this.z; - return Math.sqrt(a * a + b * b + c * c); - }; - return Vector3; - }()); - webgl.Vector3 = Vector3; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var Vector3 = (function () { + function Vector3(x, y, z) { + if (x === void 0) { x = 0; } + if (y === void 0) { y = 0; } + if (z === void 0) { z = 0; } + this.x = 0; + this.y = 0; + this.z = 0; + this.x = x; + this.y = y; + this.z = z; + } + Vector3.prototype.setFrom = function (v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + return this; + }; + Vector3.prototype.set = function (x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + }; + Vector3.prototype.add = function (v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + }; + Vector3.prototype.sub = function (v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + }; + Vector3.prototype.scale = function (s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + }; + Vector3.prototype.normalize = function () { + var len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + }; + Vector3.prototype.cross = function (v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + }; + Vector3.prototype.multiply = function (matrix) { + var l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + }; + Vector3.prototype.project = function (matrix) { + var l_mat = matrix.values; + var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + }; + Vector3.prototype.dot = function (v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + }; + Vector3.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + }; + Vector3.prototype.distance = function (v) { + var a = v.x - this.x; + var b = v.y - this.y; + var c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + }; + return Vector3; + }()); + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); var spine; (function (spine) { - var webgl; - (function (webgl) { - var ManagedWebGLRenderingContext = (function () { - function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { - if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } - var _this = this; - this.restorables = new Array(); - if (canvasOrContext instanceof HTMLCanvasElement) { - var canvas = canvasOrContext; - this.gl = (canvas.getContext("webgl", contextConfig) || canvas.getContext("experimental-webgl", contextConfig)); - this.canvas = canvas; - canvas.addEventListener("webglcontextlost", function (e) { - var event = e; - if (e) { - e.preventDefault(); - } - }); - canvas.addEventListener("webglcontextrestored", function (e) { - for (var i = 0, n = _this.restorables.length; i < n; i++) { - _this.restorables[i].restore(); - } - }); - } - else { - this.gl = canvasOrContext; - this.canvas = this.gl.canvas; - } - } - ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { - this.restorables.push(restorable); - }; - ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { - var index = this.restorables.indexOf(restorable); - if (index > -1) - this.restorables.splice(index, 1); - }; - return ManagedWebGLRenderingContext; - }()); - webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; - var WebGLBlendModeConverter = (function () { - function WebGLBlendModeConverter() { - } - WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Additive: return WebGLBlendModeConverter.ONE; - case spine.BlendMode.Multiply: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceGLBlendMode = function (blendMode, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - switch (blendMode) { - case spine.BlendMode.Normal: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; - case spine.BlendMode.Additive: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; - case spine.BlendMode.Multiply: return WebGLBlendModeConverter.DST_COLOR; - case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - return WebGLBlendModeConverter; - }()); - WebGLBlendModeConverter.ZERO = 0; - WebGLBlendModeConverter.ONE = 1; - WebGLBlendModeConverter.SRC_COLOR = 0x0300; - WebGLBlendModeConverter.ONE_MINUS_SRC_COLOR = 0x0301; - WebGLBlendModeConverter.SRC_ALPHA = 0x0302; - WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA = 0x0303; - WebGLBlendModeConverter.DST_ALPHA = 0x0304; - WebGLBlendModeConverter.ONE_MINUS_DST_ALPHA = 0x0305; - WebGLBlendModeConverter.DST_COLOR = 0x0306; - webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; - })(webgl = spine.webgl || (spine.webgl = {})); + var webgl; + (function (webgl) { + var ManagedWebGLRenderingContext = (function () { + function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { + if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } + var _this = this; + this.restorables = new Array(); + if (canvasOrContext instanceof HTMLCanvasElement) { + var canvas = canvasOrContext; + this.gl = (canvas.getContext("webgl", contextConfig) || canvas.getContext("experimental-webgl", contextConfig)); + this.canvas = canvas; + canvas.addEventListener("webglcontextlost", function (e) { + var event = e; + if (e) { + e.preventDefault(); + } + }); + canvas.addEventListener("webglcontextrestored", function (e) { + for (var i = 0, n = _this.restorables.length; i < n; i++) { + _this.restorables[i].restore(); + } + }); + } + else { + this.gl = canvasOrContext; + this.canvas = this.gl.canvas; + } + } + ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { + this.restorables.push(restorable); + }; + ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { + var index = this.restorables.indexOf(restorable); + if (index > -1) + this.restorables.splice(index, 1); + }; + return ManagedWebGLRenderingContext; + }()); + webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; + var WebGLBlendModeConverter = (function () { + function WebGLBlendModeConverter() { + } + WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return WebGLBlendModeConverter.ONE; + case spine.BlendMode.Multiply: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + }; + WebGLBlendModeConverter.getSourceGLBlendMode = function (blendMode, premultipliedAlpha) { + if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; + case spine.BlendMode.Multiply: return WebGLBlendModeConverter.DST_COLOR; + case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + }; + return WebGLBlendModeConverter; + }()); + WebGLBlendModeConverter.ZERO = 0; + WebGLBlendModeConverter.ONE = 1; + WebGLBlendModeConverter.SRC_COLOR = 0x0300; + WebGLBlendModeConverter.ONE_MINUS_SRC_COLOR = 0x0301; + WebGLBlendModeConverter.SRC_ALPHA = 0x0302; + WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA = 0x0303; + WebGLBlendModeConverter.DST_ALPHA = 0x0304; + WebGLBlendModeConverter.ONE_MINUS_DST_ALPHA = 0x0305; + WebGLBlendModeConverter.DST_COLOR = 0x0306; + webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; + })(webgl = spine.webgl || (spine.webgl = {})); })(spine || (spine = {})); //# sourceMappingURL=spine-webgl.js.map \ No newline at end of file diff --git a/spine-ts/webgl/demos/assets/atlas1.atlas b/spine-ts/webgl/demos/assets/atlas1.atlas new file mode 100755 index 000000000..a0015a564 --- /dev/null +++ b/spine-ts/webgl/demos/assets/atlas1.atlas @@ -0,0 +1,1042 @@ + +atlas1.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +alien/back-foot + rotate: false + xy: 686, 829 + size: 5, 3 + orig: 5, 3 + offset: 0, 0 + index: -1 +alien/back-shin + rotate: false + xy: 443, 2 + size: 13, 15 + orig: 13, 15 + offset: 0, 0 + index: -1 +alien/back-thigh + rotate: false + xy: 426, 2 + size: 15, 15 + orig: 15, 15 + offset: 0, 0 + index: -1 +alien/backarmor + rotate: false + xy: 932, 193 + size: 50, 56 + orig: 50, 56 + offset: 0, 0 + index: -1 +alien/blown-up-neck + rotate: false + xy: 904, 55 + size: 47, 32 + orig: 47, 32 + offset: 0, 0 + index: -1 +alien/body + rotate: false + xy: 929, 251 + size: 61, 73 + orig: 61, 73 + offset: 0, 0 + index: -1 +alien/burst01 + rotate: false + xy: 326, 200 + size: 89, 96 + orig: 89, 96 + offset: 0, 0 + index: -1 +alien/burst02 + rotate: true + xy: 463, 300 + size: 96, 112 + orig: 96, 112 + offset: 0, 0 + index: -1 +alien/burst03-bg + rotate: false + xy: 175, 356 + size: 171, 140 + orig: 171, 140 + offset: 0, 0 + index: -1 +alien/burst03-fg + rotate: false + xy: 359, 558 + size: 210, 185 + orig: 210, 185 + offset: 0, 0 + index: -1 +alien/eye + rotate: false + xy: 975, 491 + size: 47, 47 + orig: 47, 47 + offset: 0, 0 + index: -1 +alien/eye-highlight + rotate: false + xy: 810, 2 + size: 13, 13 + orig: 13, 13 + offset: 0, 0 + index: -1 +alien/eye-pupil + rotate: false + xy: 881, 29 + size: 11, 11 + orig: 11, 11 + offset: 0, 0 + index: -1 +alien/eye-stalk + rotate: true + xy: 953, 42 + size: 49, 41 + orig: 49, 41 + offset: 0, 0 + index: -1 +alien/front-foot + rotate: true + xy: 222, 140 + size: 6, 4 + orig: 6, 4 + offset: 0, 0 + index: -1 +alien/front-lower-arm + rotate: true + xy: 714, 2 + size: 34, 39 + orig: 34, 39 + offset: 0, 0 + index: -1 +alien/front-shin + rotate: true + xy: 407, 2 + size: 15, 17 + orig: 15, 17 + offset: 0, 0 + index: -1 +alien/front-thigh + rotate: false + xy: 793, 17 + size: 17, 17 + orig: 17, 17 + offset: 0, 0 + index: -1 +alien/front-upper-arm + rotate: true + xy: 774, 2 + size: 35, 17 + orig: 35, 17 + offset: 0, 0 + index: -1 +alien/head + rotate: false + xy: 463, 214 + size: 92, 84 + orig: 92, 84 + offset: 0, 0 + index: -1 +alien/lower-back-arm + rotate: false + xy: 930, 326 + size: 31, 28 + orig: 31, 28 + offset: 0, 0 + index: -1 +alien/metaljaw + rotate: false + xy: 648, 192 + size: 75, 53 + orig: 75, 53 + offset: 0, 0 + index: -1 +alien/splat01 + rotate: false + xy: 165, 198 + size: 159, 156 + orig: 159, 156 + offset: 0, 0 + index: -1 +alien/splat01-fg + rotate: false + xy: 630, 745 + size: 126, 82 + orig: 126, 82 + offset: 0, 0 + index: -1 +alien/splat02 + rotate: false + xy: 359, 398 + size: 228, 158 + orig: 228, 158 + offset: 0, 0 + index: -1 +alien/splat03 + rotate: false + xy: 2, 11 + size: 224, 105 + orig: 224, 105 + offset: 0, 0 + index: -1 +alien/upper-back-arm + rotate: true + xy: 800, 40 + size: 19, 27 + orig: 19, 27 + offset: 0, 0 + index: -1 +dragon/L_front_leg + rotate: false + xy: 881, 42 + size: 21, 14 + orig: 21, 14 + offset: 0, 0 + index: -1 +dragon/L_front_thigh + rotate: false + xy: 829, 41 + size: 21, 18 + orig: 21, 18 + offset: 0, 0 + index: -1 +dragon/L_rear_leg + rotate: false + xy: 573, 83 + size: 52, 44 + orig: 52, 44 + offset: 0, 0 + index: -1 +dragon/L_rear_thigh + rotate: true + xy: 719, 720 + size: 23, 37 + orig: 23, 37 + offset: 0, 0 + index: -1 +dragon/L_wing01 + rotate: true + xy: 638, 103 + size: 48, 64 + orig: 48, 64 + offset: 0, 0 + index: -1 +dragon/L_wing02 + rotate: true + xy: 401, 150 + size: 45, 67 + orig: 45, 67 + offset: 0, 0 + index: -1 +dragon/L_wing03 + rotate: false + xy: 975, 540 + size: 47, 52 + orig: 47, 52 + offset: 0, 0 + index: -1 +dragon/L_wing04 + rotate: true + xy: 774, 142 + size: 47, 34 + orig: 47, 34 + offset: 0, 0 + index: -1 +dragon/L_wing05 + rotate: false + xy: 841, 179 + size: 55, 53 + orig: 55, 53 + offset: 0, 0 + index: -1 +dragon/L_wing06 + rotate: true + xy: 725, 191 + size: 48, 83 + orig: 48, 83 + offset: 0, 0 + index: -1 +dragon/L_wing07 + rotate: true + xy: 708, 149 + size: 40, 64 + orig: 40, 64 + offset: 0, 0 + index: -1 +dragon/L_wing08 + rotate: true + xy: 765, 99 + size: 41, 45 + orig: 41, 45 + offset: 0, 0 + index: -1 +dragon/L_wing09 + rotate: true + xy: 864, 92 + size: 51, 42 + orig: 51, 42 + offset: 0, 0 + index: -1 +dragon/R_front_leg + rotate: false + xy: 676, 9 + size: 25, 22 + orig: 25, 22 + offset: 0, 0 + index: -1 +dragon/R_front_thigh + rotate: false + xy: 714, 38 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +dragon/R_rear_leg + rotate: true + xy: 997, 89 + size: 29, 25 + orig: 29, 25 + offset: 0, 0 + index: -1 +dragon/R_rear_thigh + rotate: true + xy: 533, 25 + size: 23, 37 + orig: 23, 37 + offset: 0, 0 + index: -1 +dragon/R_wing01 + rotate: false + xy: 165, 118 + size: 55, 78 + orig: 55, 78 + offset: 0, 0 + index: -1 +dragon/R_wing02 + rotate: true + xy: 648, 247 + size: 51, 76 + orig: 51, 76 + offset: 0, 0 + index: -1 +dragon/R_wing03 + rotate: true + xy: 343, 2 + size: 68, 62 + orig: 68, 62 + offset: 0, 0 + index: -1 +dragon/R_wing04 + rotate: true + xy: 536, 142 + size: 70, 36 + orig: 70, 36 + offset: 0, 0 + index: -1 +dragon/R_wing05 + rotate: false + xy: 471, 94 + size: 63, 57 + orig: 63, 57 + offset: 0, 0 + index: -1 +dragon/R_wing06 + rotate: true + xy: 881, 454 + size: 50, 92 + orig: 50, 92 + offset: 0, 0 + index: -1 +dragon/R_wing07 + rotate: true + xy: 333, 148 + size: 50, 66 + orig: 50, 66 + offset: 0, 0 + index: -1 +dragon/R_wing08 + rotate: true + xy: 470, 153 + size: 59, 64 + orig: 59, 64 + offset: 0, 0 + index: -1 +dragon/R_wing09 + rotate: false + xy: 574, 164 + size: 62, 51 + orig: 62, 51 + offset: 0, 0 + index: -1 +dragon/back + rotate: false + xy: 943, 145 + size: 48, 46 + orig: 48, 46 + offset: 0, 0 + index: -1 +dragon/chest + rotate: true + xy: 881, 601 + size: 34, 31 + orig: 34, 31 + offset: 0, 0 + index: -1 +dragon/chin + rotate: true + xy: 908, 89 + size: 54, 37 + orig: 54, 37 + offset: 0, 0 + index: -1 +dragon/front_toeA + rotate: false + xy: 726, 421 + size: 7, 13 + orig: 7, 13 + offset: 0, 0 + index: -1 +dragon/front_toeB + rotate: false + xy: 719, 584 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +dragon/head + rotate: true + xy: 340, 72 + size: 74, 65 + orig: 74, 65 + offset: 0, 0 + index: -1 +dragon/rear-toe + rotate: true + xy: 326, 303 + size: 27, 19 + orig: 27, 19 + offset: 0, 0 + index: -1 +dragon/tail01 + rotate: false + xy: 981, 834 + size: 30, 38 + orig: 30, 38 + offset: 0, 0 + index: -1 +dragon/tail02 + rotate: true + xy: 768, 39 + size: 24, 30 + orig: 24, 30 + offset: 0, 0 + index: -1 +dragon/tail03 + rotate: true + xy: 996, 13 + size: 18, 23 + orig: 18, 23 + offset: 0, 0 + index: -1 +dragon/tail04 + rotate: false + xy: 812, 20 + size: 14, 18 + orig: 14, 18 + offset: 0, 0 + index: -1 +dragon/tail05 + rotate: true + xy: 793, 2 + size: 13, 15 + orig: 13, 15 + offset: 0, 0 + index: -1 +dragon/tail06 + rotate: false + xy: 951, 23 + size: 24, 17 + orig: 24, 17 + offset: 0, 0 + index: -1 +raptor/back-arm + rotate: false + xy: 852, 39 + size: 27, 17 + orig: 27, 17 + offset: 0, 0 + index: -1 +raptor/back-bracer + rotate: true + xy: 977, 17 + size: 23, 17 + orig: 23, 17 + offset: 0, 0 + index: -1 +raptor/back-hand + rotate: true + xy: 326, 332 + size: 22, 20 + orig: 22, 20 + offset: 0, 0 + index: -1 +raptor/back-knee + rotate: false + xy: 810, 145 + size: 29, 40 + orig: 29, 40 + offset: 0, 0 + index: -1 +raptor/back-thigh + rotate: true + xy: 719, 600 + size: 23, 14 + orig: 23, 14 + offset: 0, 0 + index: -1 +raptor/dust01 + rotate: false + xy: 470, 2 + size: 29, 22 + orig: 29, 22 + offset: 0, 0 + index: -1 +raptor/dust02 + rotate: false + xy: 996, 61 + size: 26, 26 + orig: 26, 26 + offset: 0, 0 + index: -1 +raptor/dust03 + rotate: true + xy: 571, 561 + size: 19, 16 + orig: 19, 16 + offset: 0, 0 + index: -1 +raptor/eyes-open + rotate: true + xy: 607, 2 + size: 28, 27 + orig: 28, 27 + offset: 0, 0 + index: -1 +raptor/front-arm + rotate: true + xy: 587, 2 + size: 29, 18 + orig: 29, 18 + offset: 0, 0 + index: -1 +raptor/front-bracer + rotate: false + xy: 904, 36 + size: 24, 17 + orig: 24, 17 + offset: 0, 0 + index: -1 +raptor/front-hand + rotate: true + xy: 743, 38 + size: 25, 23 + orig: 25, 23 + offset: 0, 0 + index: -1 +raptor/front-open-hand + rotate: false + xy: 996, 33 + size: 26, 26 + orig: 26, 26 + offset: 0, 0 + index: -1 +raptor/front-thigh + rotate: true + xy: 755, 2 + size: 34, 17 + orig: 34, 17 + offset: 0, 0 + index: -1 +raptor/gun + rotate: true + xy: 407, 84 + size: 64, 62 + orig: 64, 62 + offset: 0, 0 + index: -1 +raptor/gun-nohand + rotate: true + xy: 407, 19 + size: 63, 61 + orig: 63, 61 + offset: 0, 0 + index: -1 +raptor/head + rotate: true + xy: 557, 217 + size: 81, 89 + orig: 81, 89 + offset: 0, 0 + index: -1 +raptor/lower-leg + rotate: true + xy: 704, 103 + size: 44, 59 + orig: 44, 59 + offset: 0, 0 + index: -1 +raptor/mouth-grind + rotate: true + xy: 636, 2 + size: 28, 18 + orig: 28, 18 + offset: 0, 0 + index: -1 +raptor/mouth-smile + rotate: true + xy: 656, 2 + size: 28, 18 + orig: 28, 18 + offset: 0, 0 + index: -1 +raptor/neck + rotate: false + xy: 875, 341 + size: 11, 12 + orig: 11, 12 + offset: 0, 0 + index: -1 +raptor/raptor-arm-back + rotate: false + xy: 973, 326 + size: 49, 52 + orig: 49, 52 + offset: 0, 0 + index: -1 +raptor/raptor-body + rotate: true + xy: 2, 411 + size: 379, 171 + orig: 379, 171 + offset: 0, 0 + index: -1 +raptor/raptor-front-arm + rotate: false + xy: 973, 380 + size: 49, 61 + orig: 49, 61 + offset: 0, 0 + index: -1 +raptor/raptor-front-leg + rotate: true + xy: 758, 717 + size: 115, 154 + orig: 115, 154 + offset: 0, 0 + index: -1 +raptor/raptor-hindleg-back + rotate: false + xy: 914, 703 + size: 101, 129 + orig: 101, 129 + offset: 0, 0 + index: -1 +raptor/raptor-horn + rotate: false + xy: 222, 148 + size: 109, 48 + orig: 109, 48 + offset: 0, 0 + index: -1 +raptor/raptor-horn-back + rotate: true + xy: 841, 234 + size: 105, 46 + orig: 105, 46 + offset: 0, 0 + index: -1 +raptor/raptor-jaw + rotate: false + xy: 881, 506 + size: 92, 86 + orig: 92, 86 + offset: 0, 0 + index: -1 +raptor/raptor-jaw-tooth + rotate: true + xy: 501, 2 + size: 22, 29 + orig: 22, 29 + offset: 0, 0 + index: -1 +raptor/raptor-mouth-inside + rotate: true + xy: 560, 2 + size: 21, 25 + orig: 21, 25 + offset: 0, 0 + index: -1 +raptor/raptor-saddle-noshadow + rotate: true + xy: 726, 241 + size: 98, 113 + orig: 98, 113 + offset: 0, 0 + index: -1 +raptor/raptor-saddle-strap-front + rotate: true + xy: 689, 67 + size: 34, 57 + orig: 34, 57 + offset: 0, 0 + index: -1 +raptor/raptor-saddle-strap-rear + rotate: true + xy: 668, 33 + size: 32, 44 + orig: 32, 44 + offset: 0, 0 + index: -1 +raptor/raptor-saddle-w-shadow + rotate: true + xy: 348, 298 + size: 98, 113 + orig: 98, 113 + offset: 0, 0 + index: -1 +raptor/raptor-tail-shadow + rotate: true + xy: 889, 240 + size: 113, 38 + orig: 113, 38 + offset: 0, 0 + index: -1 +raptor/raptor-tongue + rotate: true + xy: 984, 198 + size: 51, 38 + orig: 51, 38 + offset: 0, 0 + index: -1 +raptor/stirrup-back + rotate: false + xy: 532, 2 + size: 26, 21 + orig: 26, 21 + offset: 0, 0 + index: -1 +raptor/stirrup-front + rotate: true + xy: 992, 256 + size: 27, 30 + orig: 27, 30 + offset: 0, 0 + index: -1 +raptor/stirrup-strap + rotate: false + xy: 993, 169 + size: 29, 27 + orig: 29, 27 + offset: 0, 0 + index: -1 +raptor/torso + rotate: true + xy: 841, 145 + size: 32, 55 + orig: 32, 55 + offset: 0, 0 + index: -1 +raptor/visor + rotate: true + xy: 862, 637 + size: 78, 50 + orig: 78, 50 + offset: 0, 0 + index: -1 +spineboy/crosshair + rotate: false + xy: 572, 33 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +spineboy/eye-indifferent + rotate: false + xy: 812, 95 + size: 50, 48 + orig: 50, 48 + offset: 0, 0 + index: -1 +spineboy/eye-surprised + rotate: true + xy: 947, 93 + size: 50, 48 + orig: 50, 48 + offset: 0, 0 + index: -1 +spineboy/front-bracer + rotate: true + xy: 898, 145 + size: 31, 43 + orig: 31, 43 + offset: 0, 0 + index: -1 +spineboy/front-fist-closed + rotate: true + xy: 622, 32 + size: 41, 44 + orig: 41, 44 + offset: 0, 0 + index: -1 +spineboy/front-fist-open + rotate: true + xy: 975, 443 + size: 46, 47 + orig: 46, 47 + offset: 0, 0 + index: -1 +spineboy/front-foot + rotate: false + xy: 638, 153 + size: 68, 37 + orig: 68, 37 + offset: 0, 0 + index: -1 +spineboy/front-shin + rotate: false + xy: 417, 197 + size: 44, 99 + orig: 44, 99 + offset: 0, 0 + index: -1 +spineboy/front-thigh + rotate: true + xy: 627, 75 + size: 26, 60 + orig: 26, 60 + offset: 0, 0 + index: -1 +spineboy/front-upper-arm + rotate: false + xy: 810, 187 + size: 29, 52 + orig: 29, 52 + offset: 0, 0 + index: -1 +spineboy/goggles + rotate: false + xy: 719, 625 + size: 141, 90 + orig: 141, 90 + offset: 0, 0 + index: -1 +spineboy/gun + rotate: true + xy: 228, 33 + size: 113, 110 + orig: 113, 110 + offset: 0, 0 + index: -1 +spineboy/head + rotate: false + xy: 571, 582 + size: 146, 161 + orig: 146, 161 + offset: 0, 0 + index: -1 +spineboy/hoverboard-board + rotate: false + xy: 362, 745 + size: 266, 82 + orig: 266, 82 + offset: 0, 0 + index: -1 +spineboy/hoverboard-thruster + rotate: true + xy: 535, 50 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +spineboy/hoverglow-small + rotate: true + xy: 981, 874 + size: 148, 41 + orig: 148, 41 + offset: 0, 0 + index: -1 +spineboy/mouth-grind + rotate: false + xy: 748, 65 + size: 50, 32 + orig: 50, 32 + offset: 0, 0 + index: -1 +spineboy/mouth-oooo + rotate: false + xy: 800, 61 + size: 50, 32 + orig: 50, 32 + offset: 0, 0 + index: -1 +spineboy/mouth-smile + rotate: false + xy: 852, 58 + size: 50, 32 + orig: 50, 32 + offset: 0, 0 + index: -1 +spineboy/muzzle-glow + rotate: false + xy: 914, 594 + size: 107, 107 + orig: 107, 107 + offset: 0, 0 + index: -1 +spineboy/muzzle-ring + rotate: true + xy: 228, 5 + size: 26, 113 + orig: 26, 113 + offset: 0, 0 + index: -1 +spineboy/muzzle01 + rotate: false + xy: 686, 834 + size: 293, 188 + orig: 293, 188 + offset: 0, 0 + index: -1 +spineboy/muzzle02 + rotate: true + xy: 175, 498 + size: 292, 182 + orig: 292, 182 + offset: 0, 0 + index: -1 +spineboy/muzzle03 + rotate: false + xy: 2, 792 + size: 358, 230 + orig: 358, 230 + offset: 0, 0 + index: -1 +spineboy/muzzle04 + rotate: false + xy: 362, 829 + size: 322, 193 + orig: 322, 193 + offset: 0, 0 + index: -1 +spineboy/muzzle05 + rotate: true + xy: 2, 118 + size: 291, 161 + orig: 291, 161 + offset: 0, 0 + index: -1 +spineboy/neck + rotate: false + xy: 930, 31 + size: 19, 22 + orig: 19, 22 + offset: 0, 0 + index: -1 +spineboy/portal-bg + rotate: false + xy: 589, 436 + size: 144, 144 + orig: 144, 144 + offset: 0, 0 + index: -1 +spineboy/portal-flare1 + rotate: true + xy: 898, 178 + size: 60, 32 + orig: 60, 32 + offset: 0, 0 + index: -1 +spineboy/portal-flare2 + rotate: false + xy: 574, 129 + size: 62, 33 + orig: 62, 33 + offset: 0, 0 + index: -1 +spineboy/portal-flare3 + rotate: false + xy: 471, 60 + size: 62, 32 + orig: 62, 32 + offset: 0, 0 + index: -1 +spineboy/portal-shade + rotate: false + xy: 735, 479 + size: 144, 144 + orig: 144, 144 + offset: 0, 0 + index: -1 +spineboy/portal-streaks1 + rotate: true + xy: 735, 341 + size: 136, 138 + orig: 136, 138 + offset: 0, 0 + index: -1 +spineboy/portsl-streaks2 + rotate: false + xy: 589, 300 + size: 135, 134 + orig: 135, 134 + offset: 0, 0 + index: -1 +spineboy/rear-bracer + rotate: false + xy: 992, 285 + size: 30, 39 + orig: 30, 39 + offset: 0, 0 + index: -1 +spineboy/rear-foot + rotate: false + xy: 470, 26 + size: 61, 32 + orig: 61, 32 + offset: 0, 0 + index: -1 +spineboy/rear-shin + rotate: false + xy: 930, 356 + size: 41, 96 + orig: 41, 96 + offset: 0, 0 + index: -1 +spineboy/rear-thigh + rotate: false + xy: 536, 84 + size: 35, 56 + orig: 35, 56 + offset: 0, 0 + index: -1 +spineboy/rear-upper-arm + rotate: false + xy: 997, 120 + size: 25, 47 + orig: 25, 47 + offset: 0, 0 + index: -1 +spineboy/torso + rotate: false + xy: 875, 355 + size: 53, 97 + orig: 53, 97 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/demos/assets/atlas1.png b/spine-ts/webgl/demos/assets/atlas1.png new file mode 100755 index 000000000..0cacb98e5 Binary files /dev/null and b/spine-ts/webgl/demos/assets/atlas1.png differ diff --git a/spine-ts/webgl/demos/assets/atlas2.atlas b/spine-ts/webgl/demos/assets/atlas2.atlas new file mode 100755 index 000000000..f8480a655 --- /dev/null +++ b/spine-ts/webgl/demos/assets/atlas2.atlas @@ -0,0 +1,1063 @@ + +atlas2.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +armorgirl/Layer 100 + rotate: true + xy: 588, 198 + size: 31, 40 + orig: 31, 40 + offset: 0, 0 + index: -1 +armorgirl/Layer 101 + rotate: true + xy: 604, 272 + size: 53, 24 + orig: 53, 24 + offset: 0, 0 + index: -1 +armorgirl/Layer 102 + rotate: false + xy: 730, 581 + size: 60, 33 + orig: 60, 33 + offset: 0, 0 + index: -1 +armorgirl/Layer 103 + rotate: false + xy: 934, 596 + size: 57, 93 + orig: 57, 93 + offset: 0, 0 + index: -1 +armorgirl/Layer 104 + rotate: false + xy: 991, 846 + size: 31, 42 + orig: 31, 42 + offset: 0, 0 + index: -1 +armorgirl/Layer 106 + rotate: false + xy: 688, 321 + size: 38, 53 + orig: 38, 53 + offset: 0, 0 + index: -1 +armorgirl/Layer 107 + rotate: false + xy: 416, 196 + size: 70, 127 + orig: 70, 127 + offset: 0, 0 + index: -1 +armorgirl/Layer 108 + rotate: true + xy: 2, 2 + size: 92, 94 + orig: 92, 94 + offset: 0, 0 + index: -1 +armorgirl/Layer 109 + rotate: false + xy: 720, 187 + size: 20, 32 + orig: 20, 32 + offset: 0, 0 + index: -1 +armorgirl/Layer 110 + rotate: true + xy: 993, 605 + size: 84, 29 + orig: 84, 29 + offset: 0, 0 + index: -1 +armorgirl/Layer 111 + rotate: true + xy: 351, 113 + size: 87, 62 + orig: 87, 62 + offset: 0, 0 + index: -1 +armorgirl/Layer 112 + rotate: false + xy: 991, 890 + size: 31, 46 + orig: 31, 46 + offset: 0, 0 + index: -1 +armorgirl/Layer 113 + rotate: false + xy: 657, 116 + size: 33, 32 + orig: 33, 32 + offset: 0, 0 + index: -1 +armorgirl/Layer 114 + rotate: true + xy: 839, 542 + size: 20, 26 + orig: 20, 26 + offset: 0, 0 + index: -1 +armorgirl/Layer 115 + rotate: false + xy: 131, 70 + size: 26, 25 + orig: 26, 25 + offset: 0, 0 + index: -1 +armorgirl/Layer 116 + rotate: true + xy: 792, 574 + size: 40, 45 + orig: 40, 45 + offset: 0, 0 + index: -1 +armorgirl/Layer 117 + rotate: false + xy: 999, 692 + size: 23, 31 + orig: 23, 31 + offset: 0, 0 + index: -1 +armorgirl/Layer 118 + rotate: false + xy: 680, 269 + size: 40, 49 + orig: 40, 49 + offset: 0, 0 + index: -1 +armorgirl/Layer 66 + rotate: true + xy: 388, 472 + size: 118, 84 + orig: 118, 84 + offset: 0, 0 + index: -1 +armorgirl/Layer 68 + rotate: false + xy: 567, 83 + size: 31, 35 + orig: 31, 35 + offset: 0, 0 + index: -1 +armorgirl/Layer 69 + rotate: true + xy: 488, 201 + size: 40, 59 + orig: 40, 59 + offset: 0, 0 + index: -1 +armorgirl/Layer 70 + rotate: true + xy: 576, 265 + size: 57, 26 + orig: 57, 26 + offset: 0, 0 + index: -1 +armorgirl/Layer 72 + rotate: false + xy: 98, 70 + size: 31, 25 + orig: 31, 25 + offset: 0, 0 + index: -1 +armorgirl/Layer 73 + rotate: true + xy: 489, 324 + size: 43, 90 + orig: 43, 90 + offset: 0, 0 + index: -1 +armorgirl/Layer 74 + rotate: false + xy: 335, 2 + size: 51, 66 + orig: 51, 66 + offset: 0, 0 + index: -1 +armorgirl/Layer 75 + rotate: false + xy: 567, 164 + size: 41, 32 + orig: 41, 32 + offset: 0, 0 + index: -1 +armorgirl/Layer 76 + rotate: true + xy: 714, 116 + size: 33, 15 + orig: 33, 15 + offset: 0, 0 + index: -1 +armorgirl/Layer 77 + rotate: false + xy: 619, 90 + size: 35, 27 + orig: 35, 27 + offset: 0, 0 + index: -1 +armorgirl/Layer 78 + rotate: true + xy: 561, 2 + size: 23, 46 + orig: 23, 46 + offset: 0, 0 + index: -1 +armorgirl/Layer 79 + rotate: true + xy: 76, 97 + size: 17, 82 + orig: 17, 82 + offset: 0, 0 + index: -1 +armorgirl/Layer 80 + rotate: true + xy: 630, 155 + size: 30, 41 + orig: 30, 41 + offset: 0, 0 + index: -1 +armorgirl/Layer 81 + rotate: false + xy: 409, 461 + size: 8, 9 + orig: 8, 9 + offset: 0, 0 + index: -1 +armorgirl/Layer 82 + rotate: true + xy: 746, 159 + size: 29, 15 + orig: 29, 15 + offset: 0, 0 + index: -1 +armorgirl/Layer 84 + rotate: false + xy: 761, 563 + size: 29, 16 + orig: 29, 16 + offset: 0, 0 + index: -1 +armorgirl/Layer 85 + rotate: true + xy: 1010, 811 + size: 15, 12 + orig: 15, 12 + offset: 0, 0 + index: -1 +armorgirl/Layer 851 + rotate: true + xy: 1010, 794 + size: 15, 12 + orig: 15, 12 + offset: 0, 0 + index: -1 +armorgirl/Layer 86 + rotate: true + xy: 846, 810 + size: 13, 4 + orig: 13, 4 + offset: 0, 0 + index: -1 +armorgirl/Layer 87 + rotate: false + xy: 549, 231 + size: 9, 10 + orig: 9, 10 + offset: 0, 0 + index: -1 +armorgirl/Layer 871 + rotate: false + xy: 340, 116 + size: 9, 10 + orig: 9, 10 + offset: 0, 0 + index: -1 +armorgirl/Layer 88 + rotate: false + xy: 813, 616 + size: 7, 6 + orig: 7, 6 + offset: 0, 0 + index: -1 +armorgirl/Layer 89 + rotate: false + xy: 1010, 784 + size: 9, 8 + orig: 9, 8 + offset: 0, 0 + index: -1 +armorgirl/Layer 90 + rotate: true + xy: 98, 2 + size: 66, 111 + orig: 66, 111 + offset: 0, 0 + index: -1 +armorgirl/Layer 91 + rotate: false + xy: 733, 92 + size: 20, 29 + orig: 20, 29 + offset: 0, 0 + index: -1 +armorgirl/Layer 92 + rotate: false + xy: 166, 202 + size: 134, 130 + orig: 134, 130 + offset: 0, 0 + index: -1 +armorgirl/Layer 93 + rotate: false + xy: 578, 380 + size: 56, 98 + orig: 56, 98 + offset: 0, 0 + index: -1 +armorgirl/Layer 94 + rotate: false + xy: 820, 549 + size: 17, 23 + orig: 17, 23 + offset: 0, 0 + index: -1 +armorgirl/Layer 95 + rotate: false + xy: 567, 120 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +armorgirl/Layer 96 + rotate: true + xy: 549, 201 + size: 28, 37 + orig: 28, 37 + offset: 0, 0 + index: -1 +armorgirl/Layer 97 + rotate: false + xy: 720, 221 + size: 27, 32 + orig: 27, 32 + offset: 0, 0 + index: -1 +armorgirl/Layer 98 + rotate: true + xy: 733, 73 + size: 17, 20 + orig: 17, 20 + offset: 0, 0 + index: -1 +armorgirl/Layer 99 + rotate: true + xy: 516, 2 + size: 19, 35 + orig: 19, 35 + offset: 0, 0 + index: -1 +greengirl/Layer 17 + rotate: false + xy: 202, 334 + size: 222, 120 + orig: 222, 120 + offset: 0, 0 + index: -1 +greengirl/Layer 20 + rotate: false + xy: 198, 645 + size: 190, 377 + orig: 190, 377 + offset: 0, 0 + index: -1 +greengirl/Layer 21 + rotate: false + xy: 516, 23 + size: 43, 55 + orig: 43, 55 + offset: 0, 0 + index: -1 +greengirl/Layer 22 + rotate: false + xy: 710, 579 + size: 18, 38 + orig: 18, 38 + offset: 0, 0 + index: -1 +greengirl/Layer 23 + rotate: false + xy: 609, 2 + size: 23, 23 + orig: 23, 23 + offset: 0, 0 + index: -1 +greengirl/Layer 24 + rotate: false + xy: 692, 111 + size: 20, 37 + orig: 20, 37 + offset: 0, 0 + index: -1 +greengirl/Layer 25 + rotate: false + xy: 742, 190 + size: 17, 29 + orig: 17, 29 + offset: 0, 0 + index: -1 +greengirl/Layer 26 + rotate: true + xy: 792, 553 + size: 19, 26 + orig: 19, 26 + offset: 0, 0 + index: -1 +greengirl/Layer 27 + rotate: true + xy: 893, 541 + size: 18, 25 + orig: 18, 25 + offset: 0, 0 + index: -1 +greengirl/Layer 28 + rotate: false + xy: 610, 166 + size: 18, 30 + orig: 18, 30 + offset: 0, 0 + index: -1 +greengirl/Layer 29 + rotate: false + xy: 714, 84 + size: 17, 30 + orig: 17, 30 + offset: 0, 0 + index: -1 +greengirl/Layer 30 + rotate: false + xy: 600, 88 + size: 17, 33 + orig: 17, 33 + offset: 0, 0 + index: -1 +greengirl/Layer 32 + rotate: false + xy: 55, 302 + size: 19, 43 + orig: 19, 43 + offset: 0, 0 + index: -1 +greengirl/Layer 33 + rotate: true + xy: 991, 828 + size: 16, 31 + orig: 16, 31 + offset: 0, 0 + index: -1 +greengirl/Layer 34 + rotate: false + xy: 709, 151 + size: 17, 33 + orig: 17, 33 + offset: 0, 0 + index: -1 +greengirl/Layer 35 + rotate: false + xy: 728, 155 + size: 16, 30 + orig: 16, 30 + offset: 0, 0 + index: -1 +greengirl/Layer 36 + rotate: true + xy: 592, 27 + size: 20, 31 + orig: 20, 31 + offset: 0, 0 + index: -1 +greengirl/Layer 37 + rotate: false + xy: 606, 231 + size: 22, 39 + orig: 22, 39 + offset: 0, 0 + index: -1 +greengirl/Layer 38 + rotate: true + xy: 390, 592 + size: 110, 100 + orig: 110, 100 + offset: 0, 0 + index: -1 +greengirl/Layer 39 + rotate: false + xy: 697, 514 + size: 30, 63 + orig: 30, 63 + offset: 0, 0 + index: -1 +greengirl/Layer 40 + rotate: false + xy: 839, 564 + size: 60, 30 + orig: 60, 30 + offset: 0, 0 + index: -1 +greengirl/Layer 41 + rotate: true + xy: 817, 866 + size: 70, 27 + orig: 70, 27 + offset: 0, 0 + index: -1 +greengirl/Layer 42 + rotate: false + xy: 630, 320 + size: 56, 54 + orig: 56, 54 + offset: 0, 0 + index: -1 +greengirl/Layer 43 + rotate: false + xy: 166, 335 + size: 27, 10 + orig: 27, 10 + offset: 0, 0 + index: -1 +greengirl/Layer 44 + rotate: false + xy: 501, 70 + size: 9, 8 + orig: 9, 8 + offset: 0, 0 + index: -1 +greengirl/Layer 45 + rotate: true + xy: 592, 49 + size: 32, 20 + orig: 32, 20 + offset: 0, 0 + index: -1 +greengirl/Layer 46 + rotate: false + xy: 474, 571 + size: 16, 19 + orig: 16, 19 + offset: 0, 0 + index: -1 +greengirl/Layer 47 + rotate: true + xy: 749, 234 + size: 19, 13 + orig: 19, 13 + offset: 0, 0 + index: -1 +greengirl/Layer 48 + rotate: false + xy: 722, 255 + size: 31, 30 + orig: 31, 30 + offset: 0, 0 + index: -1 +greengirl/Layer 49 + rotate: false + xy: 488, 243 + size: 70, 79 + orig: 70, 79 + offset: 0, 0 + index: -1 +greengirl/Layer 50 + rotate: true + xy: 388, 2 + size: 57, 42 + orig: 57, 42 + offset: 0, 0 + index: -1 +greengirl/Layer 51 + rotate: false + xy: 76, 116 + size: 88, 60 + orig: 88, 60 + offset: 0, 0 + index: -1 +greengirl/Layer 52 + rotate: true + xy: 852, 725 + size: 98, 156 + orig: 98, 156 + offset: 0, 0 + index: -1 +greengirl/Layer 53 + rotate: false + xy: 492, 621 + size: 140, 78 + orig: 140, 78 + offset: 0, 0 + index: -1 +greengirl/Layer 54 + rotate: true + xy: 415, 113 + size: 81, 80 + orig: 81, 80 + offset: 0, 0 + index: -1 +greengirl/Layer 55 + rotate: false + xy: 731, 123 + size: 20, 30 + orig: 20, 30 + offset: 0, 0 + index: -1 +orangegirl/Layer 14 + rotate: true + xy: 202, 456 + size: 187, 184 + orig: 187, 184 + offset: 0, 0 + index: -1 +orangegirl/Layer 15 + rotate: true + xy: 750, 717 + size: 89, 100 + orig: 89, 100 + offset: 0, 0 + index: -1 +orangegirl/Layer 16 + rotate: false + xy: 576, 231 + size: 28, 32 + orig: 28, 32 + offset: 0, 0 + index: -1 +orangegirl/Layer 17 + rotate: false + xy: 692, 84 + size: 20, 25 + orig: 20, 25 + offset: 0, 0 + index: -1 +orangegirl/Layer 18 + rotate: false + xy: 388, 456 + size: 19, 14 + orig: 19, 14 + offset: 0, 0 + index: -1 +orangegirl/Layer 19 + rotate: false + xy: 388, 61 + size: 13, 7 + orig: 13, 7 + offset: 0, 0 + index: -1 +orangegirl/Layer 20 + rotate: false + xy: 867, 543 + size: 24, 19 + orig: 24, 19 + offset: 0, 0 + index: -1 +orangegirl/Layer 21 + rotate: false + xy: 634, 619 + size: 99, 80 + orig: 99, 80 + offset: 0, 0 + index: -1 +orangegirl/Layer 22 + rotate: true + xy: 417, 61 + size: 50, 82 + orig: 50, 82 + offset: 0, 0 + index: -1 +orangegirl/Layer 23 + rotate: false + xy: 572, 480 + size: 53, 89 + orig: 53, 89 + offset: 0, 0 + index: -1 +orangegirl/Layer 24 + rotate: true + xy: 958, 559 + size: 35, 33 + orig: 35, 33 + offset: 0, 0 + index: -1 +orangegirl/Layer 25 + rotate: true + xy: 993, 543 + size: 60, 29 + orig: 60, 29 + offset: 0, 0 + index: -1 +orangegirl/Layer 26 + rotate: true + xy: 561, 27 + size: 51, 29 + orig: 51, 29 + offset: 0, 0 + index: -1 +orangegirl/Layer 27 + rotate: true + xy: 432, 3 + size: 56, 82 + orig: 56, 82 + offset: 0, 0 + index: -1 +orangegirl/Layer 28 + rotate: true + xy: 340, 70 + size: 41, 75 + orig: 41, 75 + offset: 0, 0 + index: -1 +orangegirl/Layer 29 + rotate: false + xy: 901, 561 + size: 55, 33 + orig: 55, 33 + offset: 0, 0 + index: -1 +orangegirl/Layer 30 + rotate: false + xy: 636, 429 + size: 56, 78 + orig: 56, 78 + offset: 0, 0 + index: -1 +orangegirl/Layer 31 + rotate: false + xy: 76, 178 + size: 88, 167 + orig: 88, 167 + offset: 0, 0 + index: -1 +orangegirl/Layer 32 + rotate: true + xy: 630, 187 + size: 32, 47 + orig: 32, 47 + offset: 0, 0 + index: -1 +orangegirl/Layer 33 + rotate: true + xy: 846, 825 + size: 111, 143 + orig: 111, 143 + offset: 0, 0 + index: -1 +orangegirl/Layer 34 + rotate: false + xy: 636, 376 + size: 56, 51 + orig: 56, 51 + offset: 0, 0 + index: -1 +orangegirl/Layer 35 + rotate: true + xy: 211, 2 + size: 66, 69 + orig: 66, 69 + offset: 0, 0 + index: -1 +orangegirl/Layer 36 + rotate: true + xy: 735, 624 + size: 91, 102 + orig: 91, 102 + offset: 0, 0 + index: -1 +orangegirl/Layer 37 + rotate: true + xy: 166, 70 + size: 56, 172 + orig: 56, 172 + offset: 0, 0 + index: -1 +orangegirl/Layer 38 + rotate: true + xy: 623, 579 + size: 38, 85 + orig: 38, 85 + offset: 0, 0 + index: -1 +orangegirl/Layer 39 + rotate: false + xy: 581, 327 + size: 47, 51 + orig: 47, 51 + offset: 0, 0 + index: -1 +orangegirl/Layer 40 + rotate: true + xy: 679, 225 + size: 42, 39 + orig: 42, 39 + offset: 0, 0 + index: -1 +orangegirl/Layer 41 + rotate: true + xy: 817, 938 + size: 84, 199 + orig: 84, 199 + offset: 0, 0 + index: -1 +orangegirl/Layer 42 + rotate: true + xy: 492, 571 + size: 48, 129 + orig: 48, 129 + offset: 0, 0 + index: -1 +orangegirl/Layer 43 + rotate: false + xy: 599, 123 + size: 20, 39 + orig: 20, 39 + offset: 0, 0 + index: -1 +orangegirl/Layer 44 + rotate: false + xy: 426, 325 + size: 61, 145 + orig: 61, 145 + offset: 0, 0 + index: -1 +orangegirl/Layer 45 + rotate: false + xy: 501, 80 + size: 64, 49 + orig: 64, 49 + offset: 0, 0 + index: -1 +orangegirl/Layer 46 + rotate: false + xy: 679, 186 + size: 39, 37 + orig: 39, 37 + offset: 0, 0 + index: -1 +orangegirl/Layer 47 + rotate: true + xy: 722, 287 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +orangegirl/Layer 48 + rotate: false + xy: 282, 2 + size: 51, 66 + orig: 51, 66 + offset: 0, 0 + index: -1 +orangegirl/Layer 49 + rotate: false + xy: 302, 202 + size: 112, 130 + orig: 112, 130 + offset: 0, 0 + index: -1 +stretchyman/back arm + rotate: false + xy: 2, 96 + size: 72, 202 + orig: 72, 202 + offset: 0, 0 + index: -1 +stretchyman/back leg + rotate: false + xy: 390, 704 + size: 100, 318 + orig: 100, 318 + offset: 0, 0 + index: -1 +stretchyman/body + rotate: false + xy: 55, 570 + size: 141, 452 + orig: 141, 452 + offset: 0, 0 + index: -1 +stretchyman/front arm + rotate: false + xy: 55, 347 + size: 145, 221 + orig: 145, 221 + offset: 0, 0 + index: -1 +stretchyman/head + rotate: false + xy: 489, 369 + size: 87, 102 + orig: 87, 102 + offset: 0, 0 + index: -1 +tank/antenna + rotate: true + xy: 735, 616 + size: 6, 76 + orig: 6, 76 + offset: 0, 0 + index: -1 +tank/cannon + rotate: false + xy: 492, 701 + size: 233, 15 + orig: 233, 15 + offset: 0, 0 + index: -1 +tank/cannonConnector + rotate: true + xy: 656, 86 + size: 28, 34 + orig: 28, 34 + offset: 0, 0 + index: -1 +tank/ground + rotate: false + xy: 492, 718 + size: 256, 88 + orig: 256, 88 + offset: 0, 0 + index: -1 +tank/guntower + rotate: false + xy: 166, 128 + size: 183, 72 + orig: 183, 72 + offset: 0, 0 + index: -1 +tank/machinegun + rotate: true + xy: 560, 239 + size: 83, 14 + orig: 83, 14 + offset: 0, 0 + index: -1 +tank/machinegun-mount + rotate: true + xy: 920, 541 + size: 18, 24 + orig: 18, 24 + offset: 0, 0 + index: -1 +tank/rock + rotate: false + xy: 852, 691 + size: 145, 32 + orig: 145, 32 + offset: 0, 0 + index: -1 +tank/tankBottom + rotate: false + xy: 492, 866 + size: 321, 69 + orig: 321, 69 + offset: 0, 0 + index: -1 +tank/tankBottom-shadow + rotate: false + xy: 492, 937 + size: 323, 85 + orig: 323, 85 + offset: 0, 0 + index: -1 +tank/tankTop + rotate: false + xy: 492, 808 + size: 352, 56 + orig: 352, 56 + offset: 0, 0 + index: -1 +tank/tread + rotate: true + xy: 839, 691 + size: 24, 8 + orig: 24, 8 + offset: 0, 0 + index: -1 +tank/tread-inside + rotate: false + xy: 553, 14 + size: 6, 7 + orig: 6, 7 + offset: 0, 0 + index: -1 +tank/wheel-big + rotate: false + xy: 630, 270 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +tank/wheel-big-overlay + rotate: false + xy: 630, 221 + size: 47, 47 + orig: 47, 47 + offset: 0, 0 + index: -1 +tank/wheel-mid + rotate: false + xy: 673, 150 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +tank/wheel-mid-overlay + rotate: false + xy: 621, 119 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +tank/wheel-small + rotate: false + xy: 753, 139 + size: 18, 18 + orig: 18, 18 + offset: 0, 0 + index: -1 +transforms/wheel-big + rotate: false + xy: 474, 473 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +transforms/wheel-big-overlay + rotate: false + xy: 839, 596 + size: 93, 93 + orig: 93, 93 + offset: 0, 0 + index: -1 +transforms/wheel-mid + rotate: false + xy: 627, 509 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +transforms/wheel-mid-overlay + rotate: false + xy: 497, 131 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +vine/vine + rotate: false + xy: 2, 300 + size: 51, 722 + orig: 51, 722 + offset: 0, 0 + index: -1 diff --git a/spine-ts/webgl/demos/assets/atlas2.png b/spine-ts/webgl/demos/assets/atlas2.png new file mode 100755 index 000000000..6bbde04a1 Binary files /dev/null and b/spine-ts/webgl/demos/assets/atlas2.png differ diff --git a/spine-ts/webgl/demos/assets/demos.json b/spine-ts/webgl/demos/assets/demos.json new file mode 100755 index 000000000..aa76e489c --- /dev/null +++ b/spine-ts/webgl/demos/assets/demos.json @@ -0,0 +1 @@ +{"alien":{"skeleton":{"hash":"qTGHa7uMu66PTx7wbX7jICaMRQo","spine":"3.6.39","width":368.26,"height":384.69},"bones":[{"name":"root"},{"name":"hip","parent":"root","x":-8.17,"y":73.5},{"name":"back-thigh","parent":"hip","length":44.3,"rotation":-54.08,"x":-2.82,"y":-2.64},{"name":"back-shin","parent":"back-thigh","length":31.17,"rotation":-50.15,"x":44.3,"y":0.06},{"name":"back-foot","parent":"back-shin","length":11.75,"rotation":91.8,"x":31.17,"y":0.09},{"name":"body","parent":"root","length":116.25,"rotation":99.84,"x":-42.45,"y":77.7},{"name":"eye-root","parent":"root"},{"name":"eye","parent":"eye-root","rotation":63.5,"x":51.29,"y":236.96},{"name":"eye-highlight","parent":"eye","x":16.4,"y":-5.7},{"name":"eyeball","parent":"eye","scaleX":0.623,"scaleY":0.623},{"name":"eye-pupil","parent":"eyeball","x":18.46,"y":-41.33,"scaleX":1.332,"scaleY":1.332},{"name":"eye-splat","parent":"root","x":256.36,"y":-17.76,"scaleX":-2.33,"scaleY":1.99},{"name":"eye-stalk-root","parent":"eyeball","rotation":-10.63,"x":-75.66,"y":16.9},{"name":"eye-stalk","parent":"eye-stalk-root","length":16.14,"rotation":179.1,"x":-9.1,"y":-2.42},{"name":"eye-stalk2","parent":"eye-stalk","length":16.14,"x":16.14},{"name":"eye-stalk3","parent":"eye-stalk2","length":16.14,"x":16.14},{"name":"eye-stalk4","parent":"eye-stalk3","length":16.14,"x":16.14},{"name":"eye-veins-controller","parent":"eyeball"},{"name":"front-thigh","parent":"hip","length":52.72,"rotation":-55.89,"x":-42.79,"y":4.11},{"name":"front-shin","parent":"front-thigh","length":34.38,"rotation":-45.22,"x":52.73,"y":0.06},{"name":"front-foot","parent":"front-shin","length":13.58,"rotation":86.84,"x":34.36,"y":-0.12},{"name":"front-upper-arm","parent":"body","length":47.09,"rotation":121.33,"x":90.9,"y":42.96},{"name":"front-lower-arm","parent":"front-upper-arm","length":75.87,"rotation":71.97,"x":47.09,"y":-0.29},{"name":"head","parent":"body","length":213.84,"rotation":-36.34,"x":116.68,"y":2.67},{"name":"upper-back-arm","parent":"body","length":50.28,"rotation":172.11,"x":50.4,"y":-84.36},{"name":"lower-back-arm","parent":"upper-back-arm","length":65.27,"rotation":74.17,"x":50.28,"y":-0.11},{"name":"metaljaw","parent":"root","length":75.82,"rotation":-74.86,"x":-37.1,"y":230.8},{"name":"splat","parent":"root","x":-11.45,"y":318.24,"scaleX":0.621,"scaleY":0.621}],"slots":[{"name":"metaljaw-bg","bone":"metaljaw","attachment":"alien/metaljaw"},{"name":"eye-splat","bone":"eye-splat"},{"name":"burst-bg","bone":"head","color":"aaff80ff","dark":"000000"},{"name":"splat-bg","bone":"splat"},{"name":"upper-back-arm","bone":"upper-back-arm","attachment":"alien/upper-back-arm"},{"name":"lower-back-arm","bone":"lower-back-arm","attachment":"alien/lower-back-arm"},{"name":"back-thigh","bone":"back-thigh","attachment":"alien/back-thigh"},{"name":"back-foot","bone":"back-foot","attachment":"alien/back-foot"},{"name":"back-shin","bone":"back-shin","attachment":"alien/back-shin"},{"name":"backarmor","bone":"body","attachment":"alien/backarmor"},{"name":"eyeball","bone":"eyeball","color":"dfa921ff","dark":"c57c1e","attachment":"alien/eye"},{"name":"eye-pupil","bone":"eye-pupil","color":"000000ff","attachment":"alien/eye-pupil"},{"name":"eye-highlight","bone":"eye-highlight","color":"ffffffc8","attachment":"alien/eye-highlight","blend":"additive"},{"name":"eye-stalk","bone":"eye-stalk-root","dark":"000000"},{"name":"splat-fg","bone":"splat"},{"name":"head","bone":"head","attachment":"alien/head"},{"name":"body","bone":"body","attachment":"alien/body"},{"name":"metaljaw","bone":"metaljaw","attachment":"alien/metaljaw"},{"name":"front-thigh","bone":"front-thigh","attachment":"alien/front-thigh"},{"name":"front-foot","bone":"front-foot","attachment":"alien/front-foot"},{"name":"front-shin","bone":"front-shin","attachment":"alien/front-shin"},{"name":"front-upper-arm","bone":"front-upper-arm","attachment":"alien/front-upper-arm"},{"name":"front-lower-arm","bone":"front-lower-arm","attachment":"alien/front-lower-arm"}],"transform":[{"name":"eye","order":2,"bones":["eye"],"target":"head","x":91.94,"y":-84.12},{"name":"eye-root","order":0,"bones":["eye-root"],"target":"head","rotation":-63.5,"x":-143,"y":-143.95,"rotateMix":0,"scaleMix":0},{"name":"jaw","order":1,"bones":["metaljaw"],"target":"head","rotation":-138.36,"x":47,"y":-7.76,"rotateMix":0,"scaleMix":0}],"skins":{"default":{"back-foot":{"alien/back-foot":{"x":4.53,"y":2.76,"rotation":12.42,"width":16,"height":11}},"back-shin":{"alien/back-shin":{"x":9.6,"y":0.84,"rotation":104.23,"width":42,"height":48}},"back-thigh":{"alien/back-thigh":{"x":21.8,"y":-0.35,"rotation":54.08,"width":47,"height":47}},"backarmor":{"alien/backarmor":{"x":121.41,"y":-18.48,"rotation":-99.84,"width":162,"height":182}},"body":{"alien/body":{"x":96.07,"y":-9.51,"rotation":-99.84,"width":196,"height":235}},"burst-bg":{"alien/burst03-bg":{"type":"mesh","uvs":[0.10357,0.21935,0.18465,0.07668,0.27288,0.01093,0.35907,0.03574,0.42894,0.13623,0.51308,0.0438,0.64058,0.01155,0.75065,0.03004,0.76009,0.09807,0.76726,0.14971,0.79281,0.16059,0.84556,0.20354,0.80039,0.21646,0.77961,0.32105,0.79923,0.43056,0.82924,0.40178,0.79577,0.30912,0.80399,0.2203,0.85017,0.2073,0.94358,0.28336,0.9308,0.33775,1,0.50248,1,0.58796,0.93591,0.63613,0.85286,0.83817,0.6791,1,0.42356,1,0.1642,0.776,0.09312,0.68855,0,0.57397,0,0.46449,0.15811,0.25358,0.05714,0.33546,0.21907,0.41635,0.4003,0.21573,0.70676,0.18972,0.7821,0.45969,0.86576,0.32396,0.91039,0.44964,0.89678,0.50703,0.85623,0.54472,0.56516,0.20173,0.60087,0.11642,0.27445,0.05938,0.27264,0.17616,0.28517,0.2429,0.13458,0.37415,0.11928,0.49774,0.14964,0.5664],"triangles":[43,2,3,1,2,43,42,5,6,8,42,6,8,6,7,4,5,42,44,1,43,44,43,3,44,3,4,35,42,8,35,8,9,41,4,42,41,42,35,34,44,4,34,4,41,12,10,11,0,1,44,45,44,34,31,0,44,45,31,44,10,12,9,9,12,35,13,35,12,37,18,19,17,18,37,16,17,37,32,0,31,20,37,19,46,32,31,15,16,37,33,31,45,46,31,33,33,45,34,37,38,15,20,38,37,36,13,14,35,13,36,32,30,0,30,32,46,47,30,46,47,46,33,38,20,21,38,14,15,39,38,21,39,14,38,36,14,39,40,36,39,48,47,33,29,30,47,29,47,48,39,21,22,23,39,22,40,39,23,28,29,48,36,26,27,28,48,27,24,36,40,24,40,23,34,36,33,33,36,48,48,36,27,41,35,36,41,36,34,25,26,36,24,25,36],"vertices":[243.87,224.76,312.76,212.12,354.77,183.53,363.03,140.82,340.13,92.86,391.14,70.52,428.74,18.79,444.15,-33.56,421.01,-49.08,403.45,-60.86,404.6,-74.1,399.44,-104.85,385.57,-86.77,342.87,-94.82,306.52,-121.77,323.17,-130.43,350.52,-100.07,384.88,-89.02,398.99,-107.54,389.84,-161.98,367.24,-165.28,320.56,-223.6,289.1,-237.78,258.43,-217.08,167.3,-213.42,72.66,-162.46,21.08,-48.05,51.2,105.25,69.05,151.58,92.43,212.29,132.73,230.45,242.28,194.65,191.76,226.28,194.66,140.35,305.09,92.5,376.51,-40.41,292.34,-118.94,359.19,-133.87,321.93,-174.71,298.05,-178.14,276,-166.23,343.51,21,382.13,19.17,337.24,174.79,293.89,156.22,271.85,139.53,193.15,185.19,144.56,171.53,125.42,146.55],"hull":31}},"eye-highlight":{"alien/eye-highlight":{"width":43,"height":43}},"eye-pupil":{"alien/eye-pupil":{"type":"mesh","uvs":[0.33333,0,0.66667,0,1,0.33333,1,0.66667,0.66667,1,0.33333,1,0,0.66667,0,0.33333,0.33333,0.33333,0.66667,0.33333,0.33333,0.66667,0.66667,0.66667],"triangles":[8,0,1,7,0,8,2,9,1,8,1,9,6,7,8,10,8,9,6,8,10,11,9,2,10,9,11,11,2,3,5,6,10,4,10,11,5,10,4,4,11,3],"vertices":[-5.83,17.5,5.83,17.5,17.5,5.83,17.5,-5.83,5.83,-17.5,-5.83,-17.5,-17.5,-5.83,-17.5,5.83,-5.83,5.83,5.83,5.83,-5.83,-5.83,5.83,-5.83],"hull":8}},"eye-splat":{"alien/splat03":{"type":"mesh","uvs":[0,0,0.33333,0,0.66667,0,1,0,1,1,0.66667,1,0.33333,1,0,1],"triangles":[0,7,1,1,7,6,1,6,2,2,6,5,2,5,3,3,5,4],"vertices":[-112.07,10.93,-38.11,17.26,38.11,16.81,108,10.03,114.33,-17.26,33.14,-26.75,-39.01,-31.27,-114.33,-17.26],"hull":8}},"eye-stalk":{"alien/eye-stalk":{"type":"mesh","uvs":[1,0.17186,0.87544,0.29277,0.89315,0.69314,1,0.90273,1,1,0.7891,1,0.5655,0.70926,0.44374,0.59641,0.34633,0.55745,0.27217,0.58566,0.2124,0.55341,0.13048,0.57894,0,0.57625,0,0.46609,0.1327,0.46206,0.23011,0.43922,0.26995,0.46877,0.3574,0.45265,0.43489,0.46743,0.49134,0.42712,0.58764,0.22829,0.83891,0,1,0],"triangles":[11,14,10,11,12,13,14,11,13,10,14,15,8,16,17,9,10,16,8,9,16,10,15,16,8,17,18,8,18,7,21,22,0,1,21,0,20,21,1,19,2,6,1,19,20,2,19,1,7,19,6,5,6,2,5,2,3,5,3,4,7,18,19],"vertices":[1,12,79.5,42.99,1,1,12,59.69,27.15,1,1,12,62.51,-25.3,1,1,12,79.5,-52.76,1,1,12,79.5,-65.5,1,1,12,45.97,-65.5,1,3,12,10.41,-27.41,0.70014,13,-19.9,24.68,0.25564,14,-36.04,24.68,0.04422,4,12,-8.95,-12.63,0.39574,13,-0.31,10.2,0.4047,14,-16.45,10.2,0.19226,15,-32.6,10.2,0.0073,4,12,-24.43,-7.53,0.15434,13,15.26,5.34,0.37965,14,-0.89,5.34,0.35628,15,-17.03,5.34,0.10973,5,12,-36.23,-11.22,0.02406,13,26.99,9.22,0.22083,14,10.84,9.22,0.43184,15,-5.3,9.22,0.25041,16,-21.44,9.22,0.07286,4,13,36.56,5.15,0.06689,14,20.41,5.15,0.29978,15,4.27,5.15,0.3765,16,-11.88,5.15,0.25684,3,14,33.38,8.7,0.13576,15,17.24,8.7,0.31231,16,1.09,8.7,0.55192,3,14,54.13,8.67,0.01597,15,37.99,8.67,0.22361,16,21.84,8.67,0.76041,3,14,54.36,-5.76,0.0282,15,38.22,-5.76,0.22512,16,22.07,-5.76,0.74668,3,14,33.27,-6.62,0.15732,15,17.13,-6.62,0.33196,16,0.98,-6.62,0.51072,4,13,33.98,-9.85,0.07948,14,17.83,-9.85,0.31806,15,1.69,-9.85,0.37309,16,-14.46,-9.85,0.22937,5,12,-36.58,4.09,0.01783,13,27.58,-6.08,0.25225,14,11.44,-6.08,0.42239,15,-4.71,-6.08,0.2484,16,-20.85,-6.08,0.05913,4,12,-22.67,6.2,0.13761,13,13.71,-8.41,0.43417,14,-2.43,-8.41,0.32491,15,-18.58,-8.41,0.10331,4,12,-10.35,4.27,0.36851,13,1.36,-6.67,0.45713,14,-14.78,-6.67,0.16417,15,-30.93,-6.67,0.0102,3,12,-1.38,9.55,0.67485,13,-7.53,-12.09,0.29353,14,-23.67,-12.09,0.03163,2,12,13.93,35.59,0.8884,13,-22.43,-38.37,0.1116,1,12,53.89,65.5,1,1,12,79.5,65.5,1],"hull":23}},"eyeball":{"alien/eye":{"type":"mesh","uvs":[0.85047,0.13875,0.98667,0.3431,0.98667,0.47303,0.98667,0.61454,0.94572,0.71073,0.87413,0.83398,0.77706,0.9087,0.64923,0.98667,0.4973,0.98667,0.35595,0.98667,0.23924,0.92448,0.14613,0.8644,0.07706,0.75411,0.01333,0.63014,0.01333,0.50033,0.01333,0.37742,0.07112,0.26126,0.12819,0.14655,0.24031,0.08097,0.35595,0.01333,0.5103,0.01333,0.65547,0.01333,0.366,0.90333,0.6247,0.89943,0.8132,0.79283,0.9159,0.61083,0.9159,0.36513,0.808,0.19483,0.6325,0.09083,0.379,0.08433,0.1905,0.20133,0.0826,0.38333,0.0865,0.61473,0.2022,0.80973,0.50622,0.08759,0.29444,0.13681,0.13626,0.29283,0.08455,0.49897,0.13693,0.69972,0.27542,0.85157,0.49981,0.90131,0.72342,0.8436,0.87136,0.68977,0.9159,0.47303,0.91047,0.22878,0.85853,0.27458,0.76322,0.08263,0.72248,0.14415,0.50307,0.48708,0.33447,0.33295,0.28782,0.37309,0.26812,0.4291,0.2617,0.49394,0.27452,0.55711,0.29889,0.60566,0.34608,0.65543,0.38241,0.68026,0.43365,0.69791,0.50138,0.70162,0.56522,0.69777,0.62072,0.67742,0.66618,0.64788,0.69809,0.59441,0.71324,0.55008,0.72398,0.47956,0.71325,0.42499,0.68781,0.37664,0.65111,0.3452,0.60899,0.32153,0.56154,0.30809,0.50458,0.29603,0.44539,0.29983,0.39825,0.31109],"triangles":[48,71,70,48,70,69,72,71,48,49,72,48,50,49,48,51,50,48,48,69,68,48,68,67,48,67,66,48,66,65,48,65,64,52,51,48,63,48,64,53,52,48,62,48,63,54,53,48,61,48,62,55,54,48,48,56,55,61,60,48,56,48,57,60,59,48,48,58,57,59,58,48,21,0,46,29,19,20,18,19,29,34,29,20,28,20,21,28,21,46,34,20,28,35,18,29,47,28,46,27,46,0,47,46,27,30,17,18,30,18,35,1,44,0,27,0,44,16,17,30,45,27,44,36,16,30,34,71,29,69,70,34,29,72,35,34,70,71,28,69,34,68,69,28,71,72,29,49,30,35,47,68,28,72,49,35,50,36,30,26,45,44,67,68,47,67,47,27,66,67,27,1,26,44,49,50,30,45,66,27,31,16,36,15,16,31,65,66,45,65,45,26,51,36,50,31,36,51,2,43,26,65,26,43,2,26,1,64,65,43,51,37,31,52,37,51,14,15,31,14,31,37,25,43,2,63,64,43,25,63,43,25,2,3,53,32,37,53,37,52,14,37,32,13,14,32,42,63,25,62,63,42,38,32,53,38,53,54,4,25,3,42,25,4,12,13,32,12,32,38,42,61,62,24,61,42,55,33,38,55,38,54,12,38,33,5,42,4,24,42,5,41,61,24,60,61,41,39,33,55,39,55,56,11,12,33,41,59,60,23,59,41,40,57,58,40,58,59,23,40,59,22,39,56,22,56,57,22,57,40,6,41,24,6,24,5,10,33,39,10,39,22,11,33,10,9,10,22,8,22,40,9,22,8,6,7,23,6,23,41,8,40,23,7,8,23],"vertices":[1,9,52.57,54.19,1,1,9,73,23.53,1,1,9,73,4.05,1,1,9,73,-17.18,1,1,9,66.86,-31.61,1,1,9,58.65,-50.88,1,1,9,41.56,-61.3,1,1,9,22.38,-73,1,1,9,-0.4,-73,1,1,9,-21.61,-73,1,1,9,-38.33,-63.87,1,1,9,-54.84,-54.86,1,1,9,-63.44,-38.12,1,1,9,-73,-19.52,1,1,9,-73,-0.05,1,1,9,-73,18.39,1,1,9,-64.33,35.81,1,1,9,-55.77,53.02,1,1,9,-38.95,62.85,1,1,9,-21.61,73,1,1,9,1.55,73,1,1,9,23.32,73,1,2,9,-20.1,-60.5,0.79808,17,-20.1,-60.5,0.20192,2,9,18.71,-59.91,0.79438,17,18.71,-59.91,0.20562,2,9,46.98,-43.92,0.79438,17,46.98,-43.92,0.20562,2,9,62.39,-16.62,0.79808,17,62.39,-16.62,0.20192,2,9,62.39,20.23,0.79808,17,62.39,20.23,0.20192,2,9,46.2,45.78,0.79438,17,46.2,45.78,0.20562,2,9,19.88,61.38,0.79808,17,19.88,61.38,0.20192,2,9,-18.15,62.35,0.79808,17,-18.15,62.35,0.20192,2,9,-46.42,44.8,0.79438,17,-46.42,44.8,0.20562,2,9,-62.61,17.5,0.79808,17,-62.61,17.5,0.20192,2,9,-62.02,-17.21,0.79808,17,-62.02,-17.21,0.20192,2,9,-44.67,-46.46,0.79438,17,-44.67,-46.46,0.20562,2,9,0.93,61.86,0.79808,17,0.93,61.86,0.20192,2,9,-30.83,54.48,0.79728,17,-30.83,54.48,0.20272,2,9,-54.56,31.08,0.79728,17,-54.56,31.08,0.20272,2,9,-62.32,0.15,0.79808,17,-62.32,0.15,0.20192,2,9,-54.46,-29.96,0.79728,17,-54.46,-29.96,0.20272,2,9,-33.69,-52.74,0.79728,17,-33.69,-52.74,0.20272,2,9,-0.03,-60.2,0.79728,17,-0.03,-60.2,0.20272,2,9,33.51,-51.54,0.79648,17,33.51,-51.54,0.20352,2,9,55.7,-28.47,0.79728,17,55.7,-28.47,0.20272,2,9,62.39,4.05,0.79808,17,62.39,4.05,0.20192,1,9,61.57,40.68,1,2,9,53.78,33.81,0.79728,17,53.78,33.81,0.20272,1,9,39.48,62.61,1,2,9,33.37,53.38,0.79728,17,33.37,53.38,0.20272,2,9,0.46,1.94,0.33108,17,0.46,1.94,0.66892,2,9,-24.83,25.06,0.38094,17,-24.83,25.06,0.61906,2,9,-31.83,19.04,0.38174,17,-31.83,19.04,0.61826,2,9,-34.78,10.63,0.38544,17,-34.78,10.63,0.61456,2,9,-35.74,0.91,0.38624,17,-35.74,0.91,0.61376,2,9,-33.82,-8.57,0.38544,17,-33.82,-8.57,0.61456,2,9,-30.17,-15.85,0.38174,17,-30.17,-15.85,0.61826,2,9,-23.09,-23.32,0.38094,17,-23.09,-23.32,0.61906,2,9,-17.64,-27.04,0.38174,17,-17.64,-27.04,0.61826,2,9,-9.95,-29.69,0.38464,17,-9.95,-29.69,0.61536,2,9,0.21,-30.24,0.38174,17,0.21,-30.24,0.61826,2,9,9.78,-29.67,0.38014,17,9.78,-29.67,0.61986,2,9,18.11,-26.61,0.37724,17,18.11,-26.61,0.62276,2,9,24.93,-22.18,0.38014,17,24.93,-22.18,0.61986,2,9,29.71,-14.16,0.38174,17,29.71,-14.16,0.61826,2,9,31.99,-7.51,0.38544,17,31.99,-7.51,0.61456,2,9,33.6,3.07,0.38624,17,33.6,3.07,0.61376,2,9,31.99,11.25,0.38544,17,31.99,11.25,0.61456,2,9,28.17,18.5,0.38174,17,28.17,18.5,0.61826,2,9,22.67,23.22,0.38094,17,22.67,23.22,0.61906,2,9,16.35,26.77,0.38174,17,16.35,26.77,0.61826,2,9,9.23,28.79,0.38544,17,9.23,28.79,0.61456,2,9,0.69,30.6,0.38624,17,0.69,30.6,0.61376,2,9,-8.19,30.03,0.38544,17,-8.19,30.03,0.61456,2,9,-15.26,28.34,0.38174,17,-15.26,28.34,0.61826],"hull":22}},"front-foot":{"alien/front-foot":{"x":5.11,"y":2.54,"rotation":14.27,"width":19,"height":12}},"front-lower-arm":{"alien/front-lower-arm":{"x":52.88,"y":5.47,"rotation":102.64,"width":110,"height":125}},"front-shin":{"alien/front-shin":{"x":10.32,"y":1.86,"rotation":101.12,"width":49,"height":56}},"front-thigh":{"alien/front-thigh":{"x":26.99,"y":0.4,"rotation":55.89,"width":54,"height":54}},"front-upper-arm":{"alien/front-upper-arm":{"x":35.92,"y":6.58,"rotation":174.62,"width":113,"height":55}},"head":{"alien/burst01":{"type":"mesh","uvs":[0.36349,0,0.20193,0.04228,0.05938,0.15467,0,0.30323,0,0.40237,0,0.45545,0,0.63455,0.0731,0.79288,0.20404,0.93264,0.38778,1,0.51283,1,0.56457,0.93822,0.54979,0.8053,0.58569,0.74861,0.60681,0.79064,0.77682,0.77402,0.92887,0.60983,0.9925,0.45944,1,0.44173,1,0.25017,0.78522,0.0547,0.55713,0,0.6308,0.6872,0.512,0.63474,0.30885,0.46497,0.30864,0.24042,0.42904,0.1072,0.71787,0.2181,0.76391,0.39125,0.71579,0.53877,0.62069,0.66092,0.54219,0.60911,0.44912,0.49953,0.40608,0.42094,0.40336,0.36818,0.42572,0.30955,0.47773,0.26688,0.5624,0.24828,0.66793,0.28394,0.71224,0.33292,0.06316,0.46033,0.03888,0.30945,0.0805,0.1714,0.21751,0.07028,0.37554,0.07911,0.60541,0.06136,0.76431,0.09983,0.90739,0.28282,0.64139,0.06273,0.60291,0.06727,0.64106,0.08235,0.60234,0.65202,0.36457,0.15883,0.51743,0.07211,0.51605,0.06855,0.2901,0.34409,0.46451,0.65207,0.5742,0.67639,0.57697,0.6685,0.62787,0.70305,0.67394,0.65823,0.84092,0.61257,0.35144,0.15357,0.29883,0.23755,0.19781,0.27899,0.67524,0.60437,0.7023,0.61751,0.73997,0.54751,0.75917,0.47179,0.73584,0.46801,0.73809,0.39256,0.73511,0.32459,0.68329,0.26738,0.63055,0.23751,0.56328,0.22615,0.51191,0.23162,0.46692,0.24929,0.43645,0.26948,0.40962,0.30229,0.3919,0.33509,0.38417,0.36538,0.381,0.39693,0.38829,0.42807,0.40647,0.47477,0.43147,0.50927,0.47783,0.56691,0.52692,0.62035,0.49518,0.55385,0.42788,0.46075,0.40459,0.39214,0.41534,0.33676,0.45452,0.28593,0.51781,0.25363,0.6201,0.25937,0.64837,0.19561,0.56718,0.16332,0.495,0.17556,0.44329,0.22733,0.42043,0.26462,0.35067,0.39764,0.35427,0.35979,0.36329,0.32417,0.37652,0.29356,0.38856,0.25794,0.41983,0.20951,0.47696,0.14996,0.56838,0.12992,0.65498,0.16221,0.05343,0.39989],"triangles":[48,45,21,20,48,21,45,54,21,54,0,21,49,54,45,43,1,0,53,54,49,44,0,54,43,0,44,50,45,48,49,45,50,46,48,20,50,48,46,26,44,54,26,54,53,106,53,49,105,26,53,105,53,106,62,43,44,52,62,44,42,2,1,26,52,44,27,107,50,106,49,50,107,106,50,106,96,105,95,106,107,43,42,1,95,96,106,94,95,107,104,52,26,104,26,105,104,105,96,46,27,50,94,107,27,74,96,95,74,95,94,97,104,96,75,96,74,97,96,75,73,74,94,63,43,62,64,42,43,25,63,62,25,62,52,37,75,74,93,37,74,76,97,75,47,46,20,47,27,46,92,75,37,36,76,75,103,52,104,98,103,104,25,52,103,73,93,74,97,98,104,77,98,97,92,36,75,72,94,27,73,94,72,38,93,73,76,77,97,91,77,76,63,64,43,20,19,47,72,38,73,36,91,76,102,25,103,78,103,98,78,98,77,35,78,77,102,103,78,3,2,42,41,3,42,64,41,42,91,35,77,101,25,102,28,71,27,72,27,71,39,38,72,71,39,72,79,102,78,101,102,79,90,78,35,79,78,90,55,64,63,55,63,25,55,25,101,100,55,101,100,101,79,80,100,79,34,79,90,80,79,34,47,28,27,89,34,90,70,71,28,39,71,70,81,100,80,89,81,80,89,80,34,99,55,100,99,100,81,108,41,64,4,3,41,4,41,108,88,33,89,81,89,33,82,81,33,47,19,18,17,28,47,5,4,108,18,17,47,55,40,108,5,108,40,91,90,35,88,90,91,88,89,90,24,55,99,70,87,39,28,69,70,68,28,17,68,69,28,88,82,33,83,82,88,92,32,88,84,83,88,32,84,88,70,69,87,67,29,69,68,67,69,92,91,36,91,92,88,37,87,32,37,32,92,93,87,37,87,93,38,87,38,39,85,32,87,84,32,85,87,29,31,69,29,87,65,31,29,17,61,68,61,67,68,17,16,61,66,65,29,66,29,67,66,67,61,86,87,31,85,87,86,6,5,40,55,108,64,23,85,86,24,84,85,24,83,84,99,81,82,24,99,82,24,82,83,85,23,24,51,31,65,56,24,23,65,30,51,65,66,30,60,66,61,30,66,22,58,31,51,86,31,58,23,86,58,57,23,58,56,23,57,66,60,22,58,51,30,22,58,30,22,57,58,59,57,22,59,22,60,13,57,59,15,60,61,59,60,15,15,61,16,14,13,59,14,59,15,40,24,6,24,40,55,7,24,56,7,6,24,13,12,56,13,56,57,8,7,56,9,8,56,12,9,56,11,9,12,10,9,11],"vertices":[219.99,58.9,187.68,94.42,138.41,115.41,89.75,110.13,62.33,96.46,47.65,89.14,-1.87,64.45,-36.32,23.9,-58.26,-28.87,-53.44,-85.18,-37.48,-117.19,-13.79,-121.92,21.07,-99.81,41.33,-101.18,32.4,-112.38,58.69,-153.6,123.5,-169.88,173.21,-165.43,179.06,-164.91,232.03,-138.5,258.68,-56.58,244.7,9.34,64.06,-104.26,63.41,-66.62,84.43,8.78,146.5,39.79,198.71,27.34,204.9,-61.87,162.89,-97.52,115.95,-105.55,70.04,-98.04,74.35,-70.81,92.77,-31.88,109.01,-10.03,123.26,-2.07,142.33,0.29,160.77,-7.13,176.71,-26.24,180.32,-58.16,172.42,-76.26,54.36,72.3,92.99,99.32,136.48,107.7,181.92,86.57,199.65,44.91,233.89,-11.47,243.53,-57.45,211.18,-119.3,238.1,-20.87,231.94,-11.65,232.64,-23.49,70.16,-92.12,176.2,36.72,219.69,9.56,220.5,10.4,115.47,30.24,52.56,-56.85,59.83,-88.28,62.37,-87.9,59.31,-105.69,77.58,-111.3,111.52,-147.75,175.98,40.81,146.04,42.7,121.69,62.84,92.64,-104.21,92.46,-112.95,116.62,-112.94,140.01,-107.41,138.08,-100.92,159.23,-91.1,177.65,-80.96,186.86,-59.81,188.39,-42.19,182.95,-23.41,174.88,-11.02,164.25,-1.94,154.78,3.08,142.28,5.42,130.95,5.43,121.58,3.23,112.45,-0.31,104.77,-6.46,94.18,-17.55,87.83,-28.71,77.81,-48.52,69.3,-68.45,83.63,-51.16,100.79,-21.1,116.79,-5.68,133.48,-0.8,152.54,-3.82,169.55,-15.56,181.01,-42.53,202.25,-40.98,200.82,-15.75,188.22,1.04,167.31,7.14,154.08,7.84,108.39,7.36,119.31,11.65,130.32,14.26,140.47,15.09,151.86,16.92,169.24,15.6,193,9.19,210.21,-11.45,212.33,-38.07,69.83,83.12],"hull":22},"alien/burst02":{"type":"mesh","uvs":[0.01285,0.25357,0.07336,0.15544,0.18165,0.07341,0.34988,0.01536,0.44435,1.0E-5,0.55991,1.0E-5,0.66539,0.01591,0.76543,0.05169,0.85764,0.10606,0.91801,0.17116,0.96506,0.23283,0.99999,0.34882,0.9955,0.46319,0.93625,0.55954,0.87565,0.63112,0.7364,0.78076,0.54858,0.80724,0.53834,0.9205,0.51102,1,0.33333,1,0.20881,0.9205,0.13881,0.819,0.0688,0.66603,0.04281,0.4682,0.00892,0.36404,0.33333,0.66666,0.63526,0.66666,0.64751,0.11218,0.55601,0.09848,0.36572,0.13683,0.2736,0.24127,0.28087,0.39269,0.37057,0.51592,0.48573,0.60782,0.62878,0.63393,0.76212,0.57649,0.85304,0.47519,0.88455,0.36972,0.85788,0.25693,0.78515,0.1713,0.34671,0.12165,0.28479,0.16702,0.31315,0.177,0.2599,0.31162,0.32067,0.4637,0.42253,0.56627,0.46648,0.10604,0.55897,0.63574,0.70162,0.61337,0.81727,0.52695,0.87372,0.41999,0.87524,0.30618,0.82405,0.21485,0.72533,0.14046,0.24368,0.23084,0.22764,0.31199,0.24649,0.40276,0.28977,0.4821,0.34979,0.54281,0.40911,0.58729,0.4754,0.63177,0.55495,0.66302,0.70705,0.64077,0.7824,0.59448,0.83822,0.54037,0.88147,0.48386,0.90589,0.42736,0.91495,0.37085,0.90727,0.30233,0.88564,0.25124,0.85353,0.20075,0.80538,0.15567,0.74188,0.1166,0.65465,0.08414,0.55557,0.07153,0.44603,0.08296,0.60235,0.3294,0.4498,0.01929,0.35621,0.03605,0.19861,0.09679,0.08963,0.17114,0.03818,0.25247,0.03342,0.36103,0.06749,0.46077,0.12146,0.61502,0.55968,0.01782,0.65932,0.0404,0.75598,0.08041,0.8399,0.12881,0.89909,0.18883,0.94031,0.24756,0.97328,0.34953,0.96055,0.45732,0.91583,0.55182,0.8566,0.62597,0.72506,0.70338],"triangles":[5,77,4,85,5,6,85,77,5,78,3,4,78,4,77,86,85,6,86,6,7,74,77,85,74,85,86,79,2,3,87,86,7,75,78,77,75,77,74,73,74,86,73,86,87,78,79,3,28,74,73,46,75,74,28,46,74,87,7,8,27,28,73,72,73,87,53,27,73,40,79,78,40,78,75,88,87,8,71,72,87,29,40,75,29,75,46,72,53,73,80,1,2,88,71,87,41,79,40,79,80,2,88,8,9,39,72,71,53,72,39,42,41,40,42,40,29,89,88,9,70,88,89,71,88,70,52,71,70,39,71,52,54,79,41,80,79,54,89,9,10,30,54,41,30,41,42,90,89,10,69,70,89,69,89,90,81,1,80,81,0,1,38,70,69,52,70,38,68,69,90,51,38,69,51,69,68,43,54,30,55,80,54,55,54,43,81,80,55,76,28,27,76,27,53,76,53,39,76,39,52,76,52,38,76,38,51,46,28,76,29,46,76,42,29,76,30,42,76,43,30,76,91,90,10,91,68,90,10,11,91,82,0,81,82,81,55,24,0,82,37,51,68,67,37,68,91,67,68,31,43,76,56,55,43,56,43,31,82,55,56,37,50,76,37,76,51,66,50,37,67,66,37,92,67,91,66,67,92,83,82,56,12,91,11,92,91,12,44,31,76,23,82,83,24,82,23,36,76,50,57,31,44,56,31,57,65,50,66,65,66,92,36,50,65,32,44,76,49,76,36,64,49,36,64,36,65,58,44,32,57,44,58,93,65,92,64,65,93,13,93,92,13,92,12,45,32,76,76,33,45,58,32,45,49,35,76,59,58,45,63,35,49,63,49,64,47,33,76,59,45,33,35,48,76,57,84,83,57,83,56,94,64,93,63,64,94,14,94,93,14,93,13,60,59,33,48,34,76,34,47,76,63,62,48,63,48,35,34,48,62,47,60,33,61,60,47,84,23,83,22,23,84,25,57,58,25,58,59,84,57,25,26,34,62,61,47,34,26,61,34,95,62,63,26,62,95,95,63,94,15,95,94,15,94,14,16,60,61,16,61,26,95,15,16,95,16,26,21,84,25,22,84,21,20,21,25,60,16,25,25,16,19,20,25,19,60,25,59,17,19,16,18,19,17],"vertices":[136.81,147.92,176.91,146.88,218.44,129.95,260.54,92.48,278.6,68.66,294.63,36.49,304.13,4.57,306.45,-29.04,301.68,-63.45,289.02,-90.74,275.62,-113.77,242.99,-142.17,205.42,-159.34,166.07,-158.36,134.54,-153.03,66.87,-138.36,32.26,-90.35,-5.75,-105.74,-35.22,-110.94,-59.87,-61.48,-51.46,-14.02,-28.39,21.8,11.31,65.92,71.62,105.01,100.57,131.22,47.81,-7.8,89.7,-91.84,270.55,-5.96,262.28,21.72,223.49,68.5,176.96,77.32,129.05,50.91,101.68,6.11,87.97,-40.75,99.38,-84.76,136.44,-112.63,181.78,-121.62,220.23,-113.41,252.97,-87.82,270.54,-53.78,225.75,76.24,202.5,86.17,203.22,76.67,152.33,69.81,111.63,28.4,92.62,-16.46,247.41,45.42,89.11,-65.63,116.13,-101.73,160.09,-120,202.48,-118.49,239.46,-100.58,261.87,-71.62,272.21,-32.17,176.18,87.33,147.74,78.73,121.03,58.86,101.4,34.04,90.11,7.56,83.97,-16.11,78.8,-41.73,79.74,-68.9,108.03,-107.65,133.44,-121.17,158.66,-127.99,182.92,-130.93,204.57,-128.63,224.08,-122.05,245.15,-108.88,258.66,-94.63,270.52,-77.56,278.4,-56.9,282.21,-32.93,280.6,-3.43,270.93,26.18,252.03,54.83,194.1,-28.37,273.13,64.04,254.73,87.38,213.24,121.47,174.1,139.82,140.68,141.05,104.95,124.89,77.45,99.34,35.1,59.48,288.85,33.69,295.38,2.32,295.86,-31.03,291.87,-62.18,280.69,-88.32,267.43,-109.25,239.06,-134.85,202.47,-148.67,165.73,-151.44,133.56,-146.89,90.3,-122.75],"hull":25},"alien/burst03-fg":{"type":"mesh","uvs":[0.01705,0.37617,0.03578,0.31601,0.04982,0.2824,0.07323,0.26382,0.14111,0.25586,0.17778,0.27438,0.21991,0.29567,0.27687,0.3452,0.32369,0.41686,0.39937,0.4894,0.47115,0.53717,0.54215,0.56105,0.61315,0.54513,0.68728,0.50267,0.74813,0.43544,0.79027,0.35759,0.8324,0.30717,0.88702,0.28505,0.94553,0.30717,0.97908,0.34609,0.98767,0.39918,0.98532,0.45136,0.9705,0.44694,0.96738,0.49382,0.9549,0.53009,0.92057,0.56017,0.91198,0.51593,0.88233,0.5062,0.84566,0.5407,0.81055,0.59997,0.77388,0.65659,0.72005,0.73797,0.66231,0.79105,0.53747,0.80697,0.52577,0.86182,0.53279,0.9317,0.5164,1,0.43214,1,0.27921,0.90959,0.20899,0.68136,0.15437,0.62297,0.11848,0.56724,0.09196,0.5407,0.04514,0.54513,0.03422,0.5177,0,0.46905,0,0.43367,0.02564,0.43544,0.05372,0.33547,0.08805,0.32044,0.10034,0.42296,0.15048,0.42864,0.13937,0.33164,0.18794,0.3569,0.07709,0.48133,0.06456,0.42893,0.11053,0.29308,0.15838,0.30331,0.07621,0.37514,0.11978,0.37747,0.91413,0.3556,0.8863,0.4052,0.84631,0.44805,0.80123,0.49275,0.74882,0.55125,0.19534,0.4595,0.24507,0.51256,0.30776,0.58177,0.43623,0.62736,0.54559,0.66048,0.70193,0.60669,0.61673,0.63601,0.37946,0.75892],"triangles":[36,37,35,35,37,34,34,37,72,37,38,72,38,39,72,34,72,33,33,72,69,33,69,32,69,71,32,32,71,31,71,70,31,31,70,30,69,68,11,69,11,71,70,64,30,30,64,29,11,12,71,71,12,70,12,13,70,70,13,64,29,64,28,64,13,63,25,26,24,24,26,23,23,26,22,63,62,27,22,26,27,61,22,27,61,27,62,21,22,20,22,61,20,62,15,61,15,16,61,61,60,20,61,16,60,60,19,20,16,17,60,60,18,19,60,17,18,64,63,28,28,63,27,13,14,63,63,14,62,14,15,62,40,41,66,41,65,66,41,42,65,43,44,42,44,54,42,51,42,54,42,51,65,44,45,54,54,47,55,47,54,45,45,46,47,51,54,50,54,55,50,55,47,0,47,46,0,55,58,50,55,0,58,50,59,51,50,58,59,0,48,58,0,1,48,59,58,49,58,48,49,51,53,65,65,7,8,65,53,7,51,59,53,59,52,53,52,59,49,52,57,53,53,57,6,53,6,7,6,57,5,48,1,49,49,56,52,52,56,57,1,2,49,49,2,56,56,4,57,57,4,5,2,3,56,56,3,4,69,72,68,39,67,72,72,67,68,39,40,67,68,10,11,67,9,68,68,9,10,40,66,67,67,66,9,66,8,9,66,65,8],"vertices":[97.36,198.53,124.34,201.87,140.19,202.19,152.33,195.6,170,167.75,170.84,148.37,171.81,126.1,165.19,92.05,147.96,58.17,136.6,11.64,133.86,-28.49,140.06,-63.74,161.44,-91.42,193.63,-115.4,232.39,-128.94,271.18,-132.35,299.5,-140.99,319.71,-160.4,323.89,-189.92,316.28,-211.83,297.88,-225.64,277.47,-234.55,275.96,-227.3,257.4,-234.86,240.87,-236.36,222,-227.24,237.02,-215.11,234.34,-200.44,213.27,-191.14,183.09,-187.23,153.58,-182.13,110.93,-174.33,78.23,-159.45,45.24,-108.49,21.79,-113.86,-3.35,-130.19,-32.94,-136.09,-51.11,-99.65,-49.6,-16.31,22.32,57.47,32.82,92.2,46.34,118.32,50.74,134.84,38.96,154.24,47.07,164.18,58.25,188.24,71.75,194.97,76.6,183.54,120.79,190.41,133.93,178.42,97.47,153.6,106.11,130.84,140.72,154.09,141.55,128.28,70.19,152.56,87.47,167.95,149.21,173.9,155.62,151.26,110.5,173.14,119.01,153.85,298.64,-185.55,273.72,-182.94,248.75,-173.8,221.98,-162.8,188.36,-151.26,104.01,105.57,94.5,73.97,81.61,33.69,91.93,-30.54,102.87,-84.14,157.1,-141.53,127.55,-110.25,29.5,-31.01],"hull":47},"alien/head":{"type":"mesh","uvs":[0.89327,0.1264,0.74405,0.05875,0.63411,0.0089,0.42766,0,0.32866,0.01774,0.25087,0.03168,0.09383,0.20554,0.01257,0.39859,0,0.55806,0.02575,0.68996,0.13995,0.87222,0.35629,1,0.50563,1,0.56603,0.92378,0.5792,0.73073,0.63301,0.7715,0.68133,0.68636,0.80761,0.75831,0.90535,0.66478,0.94997,0.5523,1,0.42617,1,0.40756,1,0.38901,1,0.29427,0.75883,0.43332,0.29543,0.28915,0.24432,0.36077,0.4232,0.55331,0.66598,0.62865,0.77076,0.57656,0.53883,0.36488,0.54487,0.33895,0.3925,0.20994,0.45361,0.12275,0.57257,0.13075,0.71598,0.2304,0.6679,0.33361,0.84124,0.22315,0.30431,0.16244,0.87994,0.42216,0.90528,0.50053,0.54287,0.353,0.40207,0.32233,0.6688,0.40531,0.32187,0.44424,0.53578,0.58825,0.76798,0.54323,0.6016,0.3844,0.71826,0.4207,0.71612,0.60373,0.36884,0.4948,0.46578,0.34215,0.34463,0.30446,0.27573,0.39459,0.25505,0.34573,0.29336,0.37153,0.35076,0.40032,0.41173,0.42726,0.48074,0.461,0.56158,0.5,0.66515,0.53303,0.74896,0.43025,0.75395,0.50853,0.73793,0.50764,0.66772,0.49101,0.57596,0.46382,0.49686,0.43328,0.42748,0.40246,0.36609,0.37703,0.30903,0.35103,0.45113,0.44382,0.47881,0.4652,0.55762,0.53179,0.62626,0.56881,0.66063,0.55615,0.69923,0.53245,0.61932,0.61417,0.42705,0.4337,0.46724,0.48153,0.54566,0.55765,0.62306,0.59843,0.66652,0.58571,0.72143,0.53688,0.75628,0.54223,0.52256,0.47952,0.53727,0.44888,0.61411,0.51822,0.62226,0.47754,0.45021,0.46126,0.46213,0.41785,0.51782,0.49906,0.50571,0.51887,0.58949,0.55521,0.58467,0.5782,0.46856,0.45658,0.48828,0.50196,0.502,0.48431,0.45893,0.4501,0.4411,0.45042,0.04802,0.40368,0.13052,0.19803,0.26396,0.06233,0.3249,0.0401,0.43162,0.02742,0.62131,0.03827,0.76313,0.09103,0.87141,0.1678,0.95269,0.27308,0.97734,0.38722,0.97265,0.41089,0.92473,0.54092],"triangles":[104,103,3,4,3,103,2,104,3,102,5,4,102,4,103,104,2,1,101,5,102,0,105,1,104,1,105,34,33,103,104,34,103,38,101,102,106,105,0,100,5,101,100,101,38,100,6,5,102,33,38,33,102,103,32,38,33,37,105,106,105,34,104,35,105,37,35,34,105,23,107,0,106,0,107,37,106,107,25,100,38,38,52,25,52,38,42,51,38,41,38,51,42,36,34,35,34,32,33,31,34,36,34,31,32,38,32,41,54,100,25,69,25,52,54,25,69,31,41,32,26,100,54,30,51,41,55,54,69,68,52,42,69,52,68,41,36,108,43,47,41,30,41,47,108,107,23,37,107,108,36,35,37,108,36,37,36,41,31,108,23,22,55,26,54,53,26,55,56,69,68,55,69,56,67,42,51,68,42,67,99,7,6,99,6,100,108,43,41,108,22,21,43,39,48,109,108,21,89,67,51,89,51,30,43,108,39,109,39,108,109,21,20,57,68,67,56,68,57,61,48,39,66,89,30,24,61,39,77,57,67,77,67,89,70,77,89,58,97,70,56,53,55,44,53,56,85,66,30,85,30,47,58,70,66,98,77,70,98,70,97,58,94,97,70,89,66,88,98,97,88,97,94,65,85,47,71,94,58,87,47,43,65,47,87,84,66,85,58,66,84,78,88,94,78,94,71,96,58,84,71,58,96,78,71,96,64,87,43,64,43,48,57,44,56,50,44,57,98,50,57,98,57,77,50,98,88,90,96,84,65,84,85,59,84,65,90,84,59,40,39,109,95,78,96,95,96,90,63,48,61,62,63,61,64,48,63,24,62,61,87,59,65,86,87,64,86,59,87,91,95,90,72,90,59,72,59,86,91,90,72,75,64,63,60,86,64,60,64,75,82,75,63,109,20,110,109,110,40,46,83,62,63,62,83,82,63,83,24,46,62,24,39,46,46,39,40,19,110,20,27,50,88,27,88,78,27,78,95,92,72,86,74,86,60,73,92,86,74,60,75,79,91,72,79,72,92,8,7,99,74,73,86,29,46,40,29,40,110,93,79,92,93,92,73,81,74,75,73,74,81,81,75,82,45,91,79,45,79,93,27,95,91,45,27,91,80,93,73,80,73,81,49,81,82,49,82,83,29,49,83,29,83,46,76,93,80,45,93,76,28,80,81,28,81,49,76,80,28,110,17,29,18,110,19,16,28,49,44,9,8,14,45,76,16,14,76,18,17,110,49,29,17,16,49,17,16,15,14,28,16,76,26,99,100,53,99,26,53,8,99,50,9,44,27,9,50,53,44,8,9,27,10,45,14,27,11,10,27,14,11,27,13,11,14,12,11,13],"vertices":[231.28,-119.66,227.98,-71.79,225.55,-36.52,200.36,19.43,182.93,43.59,169.22,62.58,106.09,83.22,48.33,81.4,7.84,65.39,-20.84,42.54,-50.08,-9.93,-52.52,-82.93,-32.73,-122.63,-6.17,-129.44,42.56,-109.51,39.76,-128.76,66.89,-131.27,66.11,-173.57,101.82,-188.2,135.11,-186.41,172.45,-184.4,176.98,-182.15,181.49,-179.9,204.56,-168.4,138.75,-121.17,112.45,19.49,88.24,24.39,65.08,-46.52,78.9,-120.19,105.47,-141.72,126.27,-54.39,133.38,-52.84,144.59,3.3,173.92,-2.35,187.73,-34.95,182.47,-85.16,150.98,-84.9,200.84,-117.57,144.47,32.5,157.52,-152.01,141.8,-168.25,129.69,-54.02,118.5,-12.87,133.64,-93.84,78.2,-6.35,71.49,-80.68,113.21,-136.94,129.83,-73.44,136.45,-108.85,91.61,-130.49,72.12,-24.97,122.12,-32.21,115.24,4.56,84.17,11.93,93.32,23.36,92.12,10.04,92.72,-8.7,94.24,-28.17,95.17,-50.61,96.39,-76.83,102.07,-108.37,138.19,-118.17,119.8,-129,117.89,-124.63,112.63,-103.95,107.1,-76.26,104.06,-51.53,102.37,-29.35,100.42,-9.94,99.19,8.37,95.43,-40.66,93.9,-50.61,88.13,-79.63,88.21,-102.37,95.84,-109.97,106.72,-117.36,76.24,-106.03,94.7,-33.03,88.39,-49.52,80.25,-79.59,80.57,-105.11,89.42,-115.12,108.59,-123.8,111.9,-133.71,96.21,-63.97,105.61,-64.17,98.91,-93,109.89,-90.23,91.07,-42.53,103.21,-40.43,90.82,-65.09,84.39,-64.27,86.65,-90.95,80.41,-92.46,94.64,-46.84,86.2,-57.59,92.32,-59.09,94.94,-43.49,92.5,-38.79,51.79,71.36,112.78,74.38,163.49,55.38,176.99,41.88,194.21,15.05,216.7,-36.68,222.65,-80.78,218.31,-118.87,203.45,-153.25,178.92,-173.66,172.55,-175.28,134.54,-178.32],"hull":24}},"lower-back-arm":{"alien/lower-back-arm":{"x":42.34,"y":10.93,"rotation":-5.4,"width":101,"height":91}},"metaljaw":{"alien/metaljaw":{"x":85.12,"y":55.13,"rotation":64.15,"width":243,"height":172}},"metaljaw-bg":{"alien/metaljaw":{"color":"7a7a7aff","x":101.82,"y":83.41,"scaleX":0.693,"scaleY":0.943,"rotation":66.62,"width":243,"height":172}},"splat-bg":{"alien/splat01":{"x":109.41,"y":290.86,"scaleX":1.702,"scaleY":1.702,"rotation":7.05,"width":514,"height":503},"alien/splat02":{"x":75.9,"y":342.4,"scaleX":1.746,"scaleY":1.746,"width":734,"height":511}},"splat-fg":{"alien/splat03":{"type":"mesh","uvs":[1,0.74645,0.78576,1,0.65397,1,0.45628,1,0.25552,1,0,1,0.03484,0.33136,0.24862,0.05845,0.45117,0.08768,0.65627,0.11728,1,0.50786],"triangles":[9,3,8,7,4,6,8,4,7,5,6,4,3,4,8,3,9,2,9,10,2,0,2,10,1,2,0],"vertices":[461.11,62.25,265.75,-46.16,145.56,-46.16,-34.71,-46.16,-217.78,-46.16,-450.79,-46.16,-419.02,239.73,-224.07,356.42,-39.37,343.92,147.66,331.27,461.11,164.27],"hull":11},"alien/splat01-fg":{"x":134.75,"y":95.12,"scaleX":1.724,"scaleY":1.724,"rotation":8.63,"width":406,"height":264}},"upper-back-arm":{"alien/upper-back-arm":{"x":38.71,"y":2.9,"rotation":68.76,"width":60,"height":86}}}},"events":{"squish":{}},"animations":{"death":{"slots":{"burst-bg":{"twoColor":[{"time":1.3,"light":"aaff80fe","dark":"083e00"}],"attachment":[{"time":1.3,"name":"alien/burst03-bg"}]},"eye-highlight":{"color":[{"time":0,"color":"ffffff0e","curve":[0.732,0.01,0.831,0.89]},{"time":0.8333,"color":"ffffff86"},{"time":1.3333,"color":"ffffff4a"},{"time":1.9333,"color":"ffffff40"}],"attachment":[{"time":0,"name":null},{"time":0.3,"name":"alien/eye-highlight"}]},"eye-splat":{"attachment":[{"time":1.9333,"name":"alien/splat03"}]},"eye-stalk":{"twoColor":[{"time":1.3,"light":"fffffffe","dark":"000000"},{"time":2,"light":"fffffffe","dark":"193400"}],"attachment":[{"time":1.3,"name":"alien/eye-stalk"}]},"eyeball":{"twoColor":[{"time":0,"light":"d5a905fe","dark":"787625"},{"time":0.2333,"light":"ffcb07fe","dark":"787625"}]},"head":{"color":[{"time":0.2333,"color":"fffffffe","curve":[0.846,0.01,0.75,1]},{"time":1.2667,"color":"f6ff85fe"},{"time":1.4,"color":"fffffffe"}],"attachment":[{"time":0.2333,"name":"alien/burst01"},{"time":0.4667,"name":"alien/burst02"},{"time":1.3,"name":"alien/burst03-fg"}]},"splat-bg":{"attachment":[{"time":1.3,"name":"alien/splat01"},{"time":1.4,"name":"alien/splat02"},{"time":1.5,"name":null}]},"splat-fg":{"attachment":[{"time":1.2667,"name":"alien/splat01-fg"},{"time":1.4,"name":null},{"time":1.5,"name":"alien/splat03"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":8.46},{"time":0.8333,"angle":8.59},{"time":0.8667,"angle":3.12},{"time":0.9,"angle":7.81},{"time":0.9333,"angle":4.16},{"time":0.9667,"angle":9.05},{"time":1,"angle":4.21},{"time":1.0333,"angle":8.65},{"time":1.0667,"angle":2.32},{"time":1.1,"angle":5.07},{"time":1.1333,"angle":1.87},{"time":1.1667,"angle":8.86},{"time":1.2,"angle":3.18},{"time":1.2333,"angle":9.6},{"time":1.2667,"angle":5.68}],"scale":[{"time":0.4667,"x":1,"y":1},{"time":0.8333,"x":1.507,"y":1.474,"curve":"stepped"},{"time":1.2333,"x":1.507,"y":1.474},{"time":1.2667,"x":1.571,"y":1.536}]},"hip":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":0,"y":-9.23,"curve":"stepped"},{"time":1.4,"x":0,"y":-9.23},{"time":1.5,"x":-20.27,"y":-19.1},{"time":1.6333,"x":-39.1,"y":-19.1}]},"back-thigh":{"rotate":[{"time":0,"angle":-4.38},{"time":0.1333,"angle":-1.22,"curve":"stepped"},{"time":1.4,"angle":-1.22},{"time":1.5,"angle":14.85}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":0.92,"y":1}]},"body":{"rotate":[{"time":0,"angle":0.36},{"time":0.8333,"angle":-7.59},{"time":0.8667,"angle":-10.51},{"time":0.9,"angle":-7.73},{"time":0.9667,"angle":-11.74},{"time":1,"angle":-8.24},{"time":1.0667,"angle":-8.24},{"time":1.1,"angle":-3.25},{"time":1.1333,"angle":-5.07},{"time":1.3667,"angle":-0.93},{"time":1.5,"angle":30.29},{"time":1.6333,"angle":74.27}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-1.55,"y":-14.45}]},"front-thigh":{"rotate":[{"time":0,"angle":-15.6},{"time":0.1333,"angle":-5.96,"curve":"stepped"},{"time":0.8333,"angle":-5.96},{"time":1.4,"angle":6.79},{"time":1.4667,"angle":7.9},{"time":1.5,"angle":19.67},{"time":1.6333,"angle":23.38}]},"back-shin":{"rotate":[{"time":0,"angle":12.88},{"time":0.1333,"angle":48.03,"curve":"stepped"},{"time":1.4,"angle":48.03},{"time":1.5,"angle":39.59}]},"front-shin":{"rotate":[{"time":0,"angle":-20.49},{"time":0.1333,"angle":-46.7,"curve":"stepped"},{"time":0.8333,"angle":-46.7},{"time":1.4,"angle":-52.98},{"time":1.5,"angle":-55.88},{"time":1.6,"angle":-20.01},{"time":1.6333,"angle":27.07}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-37.4,"curve":[0.647,0,0.93,0.87]},{"time":0.4,"angle":-41.66,"curve":[0.216,0.28,0.574,0.65]},{"time":0.6,"angle":-17.17,"curve":[0.317,0.35,0.653,0.68]},{"time":0.9,"angle":30.9,"curve":[0.329,0.35,0.662,0.68]},{"time":0.9667,"angle":17.57,"curve":[0.33,0.35,0.664,0.69]},{"time":1.0333,"angle":22.26,"curve":[0.332,0.36,0.666,0.7]},{"time":1.1,"angle":8.16,"curve":[0.334,0.37,0.668,0.71]},{"time":1.1667,"angle":11.83,"curve":[0.335,0.4,0.669,0.73]},{"time":1.2333,"angle":-1.09,"curve":[0.339,0.57,0.674,0.92]},{"time":1.3333,"angle":0.3,"curve":[0.423,0.01,0.721,0.99]},{"time":1.4667,"angle":-23.3},{"time":1.5,"angle":-11.1},{"time":1.6,"angle":43.86},{"time":1.6333,"angle":50.52}]},"upper-back-arm":{"rotate":[{"time":0,"angle":-327.38,"curve":[0.518,0,0.872,0.77]},{"time":0.5667,"angle":-13.54,"curve":[0.189,0.36,0.59,1]},{"time":0.6333,"angle":-18.33,"curve":[0.501,0,0.75,1]},{"time":0.8333,"angle":-10.06},{"time":1.3667,"angle":-13.54},{"time":1.4667,"angle":-21.13},{"time":1.5,"angle":-36.05},{"time":1.6,"angle":-52.59}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5667,"x":14.08,"y":-3.26,"curve":"stepped"},{"time":1.4667,"x":14.08,"y":-3.26},{"time":1.5,"x":7.82,"y":9.2},{"time":1.6,"x":0.17,"y":15.5}]},"back-foot":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-38,"curve":"stepped"},{"time":0.6333,"angle":-38},{"time":0.8333,"angle":-46.36}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":0.69,"y":1}]},"front-foot":{"rotate":[{"time":0,"angle":25.3},{"time":0.1333,"angle":41.81,"curve":"stepped"},{"time":0.8333,"angle":41.81},{"time":1.4,"angle":14.08},{"time":1.4667,"angle":27.15},{"time":1.5,"angle":27.54},{"time":1.6,"angle":-5.57},{"time":1.6667,"angle":-34.27}]},"front-lower-arm":{"rotate":[{"time":0,"angle":0,"curve":[0.647,0,0.93,0.87]},{"time":0.4333,"angle":-33.51,"curve":[0.204,0.28,0.572,0.67]},{"time":0.8667,"angle":-26.79},{"time":0.9,"angle":-40.59},{"time":0.9667,"angle":-29.11},{"time":1,"angle":-24.38},{"time":1.0333,"angle":-26.62},{"time":1.0667,"angle":-18.33},{"time":1.1,"angle":-22.08},{"time":1.1333,"angle":-17.4},{"time":1.2,"angle":-25.04},{"time":1.3333,"angle":-16.61,"curve":[0.423,0.01,0.721,0.99]},{"time":1.4667,"angle":16.55},{"time":1.5,"angle":20.52},{"time":1.6333,"angle":-18.51},{"time":1.7333,"angle":-32.15}],"translate":[{"time":0,"x":0,"y":0},{"time":1.8,"x":-2.43,"y":9.7}]},"lower-back-arm":{"rotate":[{"time":0,"angle":0,"curve":[0.518,0,0.872,0.77]},{"time":0.5667,"angle":-70.85,"curve":[0.189,0.36,0.59,1]},{"time":0.6333,"angle":-75.64,"curve":[0.501,0,0.75,1]},{"time":0.8333,"angle":-67.37},{"time":1.3667,"angle":-70.85},{"time":1.4,"angle":-81.64},{"time":1.5,"angle":-70.07},{"time":1.6,"angle":-61.11}]},"metaljaw":{"rotate":[{"time":0,"angle":0,"curve":[0.366,0,0.853,0.74]},{"time":0.1667,"angle":-21.58,"curve":[0.155,0.33,0.652,0.99]},{"time":0.2333,"angle":-13.04,"curve":[0.25,0,0.833,0.76]},{"time":0.3333,"angle":-17.51},{"time":0.6,"angle":-15.89},{"time":0.8333,"angle":-16.29,"curve":[0.178,0.6,0.832,0.94]},{"time":1.2667,"angle":-9.16},{"time":1.3,"angle":-7.37},{"time":1.3333,"angle":36.46},{"time":1.4,"angle":58.99},{"time":1.4667,"angle":54.61},{"time":1.5,"angle":36.01},{"time":1.5667,"angle":-4.41,"curve":[0.2,0.32,0.708,1]},{"time":1.7,"angle":-36.18,"curve":[0.537,0.01,0.643,1]},{"time":1.8667,"angle":25.47,"curve":[0.2,0.32,0.708,1]},{"time":1.9333,"angle":17.92},{"time":1.9667,"angle":15.04},{"time":2,"angle":18.05}],"translate":[{"time":0,"x":23.96,"y":-2.74},{"time":0.8333,"x":11.46,"y":27.02,"curve":[0.178,0.6,0.832,0.94]},{"time":1.2667,"x":1.42,"y":23.67},{"time":1.3,"x":74.86,"y":-64.13},{"time":1.3333,"x":166.87,"y":-115.22},{"time":1.4,"x":280.71,"y":-140.52,"curve":[0.417,0.56,0.831,0.9]},{"time":1.4667,"x":367.6,"y":-169.48},{"time":1.5333,"x":488.01,"y":-110.44},{"time":1.5667,"x":524.98,"y":-68.19},{"time":1.6667,"x":611.02,"y":-21.24},{"time":1.7,"x":621.11,"y":-17.87},{"time":1.7333,"x":611.73,"y":-23.45},{"time":1.7667,"x":577.67,"y":-38.01},{"time":1.8,"x":539.3,"y":-72.95},{"time":1.8333,"x":516.09,"y":-116.3},{"time":1.8667,"x":508.58,"y":-132.73},{"time":1.9,"x":515.31,"y":-120.95},{"time":1.9333,"x":518.67,"y":-115.9},{"time":1.9667,"x":525.2,"y":-112.64},{"time":2,"x":519.49,"y":-116.72}]},"splat":{"rotate":[{"time":1.3,"angle":5.59},{"time":1.6,"angle":2.33}],"translate":[{"time":0.4,"x":0.36,"y":11.28},{"time":0.8333,"x":-20.56,"y":-10.54,"curve":"stepped"},{"time":1.2667,"x":25.93,"y":45.92,"curve":"stepped"},{"time":1.3,"x":10.4,"y":73},{"time":1.3667,"x":-11.66,"y":52.21,"curve":"stepped"},{"time":1.4,"x":-47.48,"y":155.58,"curve":[0.39,0,0.846,0.77]},{"time":1.4927,"x":-84.49,"y":305.24,"curve":"stepped"},{"time":1.5,"x":-89.36,"y":464.81,"curve":[0.796,0,0.939,0.75]},{"time":1.7,"x":-84.17,"y":-342.24}],"scale":[{"time":1.2667,"x":0.827,"y":0.827},{"time":1.3,"x":1.135,"y":0.885},{"time":1.3667,"x":1.248,"y":1.766,"curve":"stepped"},{"time":1.4,"x":1.371,"y":1.373},{"time":1.4927,"x":1.908,"y":1.581,"curve":"stepped"},{"time":1.5,"x":2.663,"y":1.949},{"time":1.6333,"x":3.152,"y":1.544},{"time":1.7,"x":3.599,"y":0.648}]},"eye-pupil":{"rotate":[{"time":0.2333,"angle":0},{"time":0.4333,"angle":21.87},{"time":0.6,"angle":43.08},{"time":0.6667,"angle":71.18},{"time":0.8667,"angle":36.34},{"time":0.9,"angle":-13.68},{"time":1.2,"angle":3.13},{"time":1.9333,"angle":-30.81}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-56.97,"y":20.88},{"time":0.6,"x":-46.98,"y":25.19},{"time":0.6667,"x":-32.81,"y":64.25,"curve":"stepped"},{"time":0.8667,"x":-32.81,"y":64.25},{"time":0.9333,"x":-35.12,"y":22.56},{"time":1,"x":28.07,"y":40.3},{"time":1.3333,"x":26.59,"y":39.3},{"time":1.9,"x":13.33,"y":42.72},{"time":1.9333,"x":11.79,"y":43.73}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":0.9,"y":1.21},{"time":0.6,"x":0.991,"y":0.691},{"time":0.6667,"x":0.774,"y":0.781},{"time":0.8333,"x":0.753,"y":0.804},{"time":0.9,"x":0.745,"y":1.156},{"time":0.9333,"x":0.814,"y":0.751},{"time":0.9667,"x":1.118,"y":0.698},{"time":1,"x":1.06,"y":1.244},{"time":1.2667,"x":1.21,"y":1.582},{"time":1.3333,"x":0.98,"y":1.281},{"time":1.9,"x":0.936,"y":1.043},{"time":1.9333,"x":0.699,"y":1.043}]},"eye-root":{"translate":[{"time":1.3,"x":0,"y":0,"curve":[0.09,0.26,0.84,0.9]},{"time":1.7667,"x":218.25,"y":0}],"scale":[{"time":1.2667,"x":1.507,"y":1.474},{"time":1.9234,"x":1.507,"y":1.509},{"time":1.9333,"x":1.507,"y":1.312}]},"eye":{"rotate":[{"time":1.2667,"angle":-3.61},{"time":1.3,"angle":5.53,"curve":[0.344,0,0.86,0.89]},{"time":1.5333,"angle":-120},{"time":1.6667,"angle":120},{"time":1.8,"angle":0},{"time":1.9333,"angle":-120}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1,"x":15.53,"y":15.38},{"time":0.2333,"x":1.7,"y":30.31},{"time":0.4667,"x":4.88,"y":94.3},{"time":0.5,"x":1.83,"y":78.16},{"time":0.8333,"x":20.47,"y":66.06},{"time":0.8667,"x":11.22,"y":65.46},{"time":0.9333,"x":14.59,"y":71.02},{"time":1,"x":17.11,"y":72.83},{"time":1.1333,"x":17.48,"y":77.21},{"time":1.1667,"x":23.34,"y":81.63},{"time":1.2,"x":21.32,"y":81.54},{"time":1.2333,"x":31.33,"y":90.55},{"time":1.2667,"x":30.28,"y":90.51},{"time":1.3,"x":8.02,"y":89.55,"curve":[0.158,0.57,0.75,1]},{"time":1.6333,"x":-16.07,"y":716.51,"curve":[0.439,0.01,0.967,0.76]},{"time":1.9333,"x":-9.43,"y":-209.96}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":1.624,"y":1.624},{"time":0.5,"x":2.418,"y":2.418},{"time":1.2333,"x":2.89,"y":3.311},{"time":1.2667,"x":3.246,"y":3.735},{"time":1.3,"x":3.342,"y":3.735},{"time":1.3093,"x":3.648,"y":2.369},{"time":1.4333,"x":3.005,"y":3.269},{"time":1.6333,"x":3.005,"y":2.437},{"time":1.9333,"x":3.005,"y":3.474}],"shear":[{"time":1.3,"x":0,"y":0},{"time":1.6333,"x":-18.53,"y":-22.38},{"time":1.9333,"x":0,"y":0}]},"eye-stalk-root":{"rotate":[{"time":1.9,"angle":-2.98},{"time":1.9333,"angle":-5.88},{"time":2,"angle":-7.23},{"time":2.0333,"angle":-3.79},{"time":2.1,"angle":-1.88},{"time":2.1333,"angle":-3.78}],"translate":[{"time":1.3,"x":-12.25,"y":-2.31},{"time":1.9,"x":-9.79,"y":3.48},{"time":1.9333,"x":-2.84,"y":2.01},{"time":2.0333,"x":-6.22,"y":11.69},{"time":2.1,"x":-9.3,"y":4.57},{"time":2.1333,"x":-7.89,"y":6.42}]},"eye-stalk":{"rotate":[{"time":1.3,"angle":-343.39},{"time":1.4333,"angle":-289.47},{"time":1.9333,"angle":-10.51},{"time":2,"angle":-38.96,"curve":[0.385,0.68,0.73,1]},{"time":2.1,"angle":-33.95}],"translate":[{"time":1.3,"x":43.2,"y":9.63},{"time":1.3333,"x":0,"y":0,"curve":"stepped"},{"time":1.9333,"x":0,"y":0},{"time":2,"x":4.51,"y":6.41}]},"eye-stalk2":{"rotate":[{"time":1.3,"angle":16.61},{"time":1.4333,"angle":38.16},{"time":1.8,"angle":-3.77},{"time":1.9333,"angle":12.66},{"time":2,"angle":-52.98,"curve":[0.654,0.01,0.866,0.76]},{"time":2.1,"angle":-48.29}]},"eye-stalk3":{"rotate":[{"time":1.3,"angle":16.61},{"time":1.4333,"angle":38.16},{"time":1.8,"angle":34.04},{"time":1.9333,"angle":12.66},{"time":2,"angle":-51.44,"curve":[0.385,0.68,0.73,1]},{"time":2.1,"angle":-39.73}]},"eye-stalk4":{"rotate":[{"time":1.3,"angle":16.61},{"time":1.4333,"angle":-7.55},{"time":1.8,"angle":57.92},{"time":1.9333,"angle":26.58},{"time":2,"angle":-53.31,"curve":[0.385,0.68,0.73,1]},{"time":2.1,"angle":-41.6}]},"eye-splat":{"scale":[{"time":1.9333,"x":0.852,"y":0.852},{"time":1.9667,"x":1.561,"y":1.561}]},"eye-veins-controller":{"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-28.05,"y":-14.26},{"time":0.6,"x":-34.12,"y":-15.46},{"time":0.6667,"x":-19.62,"y":28.02},{"time":0.8667,"x":-23.86,"y":-22.58},{"time":0.9333,"x":-19.65,"y":-19.72},{"time":1,"x":40.46,"y":-0.58}]},"eye-highlight":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-13.54},{"time":0.5667,"angle":-10.36},{"time":0.7,"angle":-17.94},{"time":0.7333,"angle":-45.23},{"time":0.8,"angle":-36.85},{"time":1.3,"angle":-97.35},{"time":1.3333,"angle":-57.95},{"time":1.3667,"angle":-35.03},{"time":1.4,"angle":-20.02},{"time":1.4333,"angle":-9.95},{"time":1.4667,"angle":5.7},{"time":1.5,"angle":37.38},{"time":1.5333,"angle":65.52},{"time":1.5667,"angle":73.86},{"time":1.6,"angle":139.11},{"time":1.6333,"angle":-143.91},{"time":1.7667,"angle":-83.17},{"time":1.8,"angle":-45.13},{"time":1.8333,"angle":-3.24},{"time":1.8667,"angle":12.9},{"time":1.9,"angle":53.9},{"time":1.9333,"angle":-79.36}],"translate":[{"time":0,"x":12.34,"y":-1.22},{"time":0.3,"x":-0.93,"y":-12.41},{"time":0.8333,"x":-5.02,"y":-11.48},{"time":0.8667,"x":-5.83,"y":1.64},{"time":0.9,"x":-4.65,"y":-12.12},{"time":0.9333,"x":-5.83,"y":-1.98},{"time":0.9667,"x":-5.4,"y":-7.79},{"time":1,"x":-5.28,"y":-4.32},{"time":1.0333,"x":-4.49,"y":-11.5},{"time":1.0667,"x":-5.24,"y":0.9},{"time":1.1,"x":-2.86,"y":-12.6},{"time":1.1333,"x":-3.22,"y":-4.14},{"time":1.1667,"x":-3.7,"y":-15.7},{"time":1.2,"x":-3.38,"y":-7.7},{"time":1.2333,"x":-7.24,"y":-19.81},{"time":1.2667,"x":-4.91,"y":-9.91},{"time":1.3,"x":2.27,"y":-14.68},{"time":1.3333,"x":11.81,"y":-18.48},{"time":1.3667,"x":19.66,"y":-9.43},{"time":1.4,"x":21.7,"y":-4.62},{"time":1.4333,"x":22.89,"y":3.64},{"time":1.4667,"x":21.16,"y":13.24},{"time":1.5,"x":17.41,"y":17.68},{"time":1.5333,"x":11.32,"y":21.18},{"time":1.5667,"x":4.03,"y":27.71},{"time":1.6,"x":-6.09,"y":25.49},{"time":1.6333,"x":-15.72,"y":15.02},{"time":1.6667,"x":-17.19,"y":-2.44},{"time":1.7,"x":-8.29,"y":-15.02},{"time":1.7333,"x":1.29,"y":-17.8},{"time":1.7667,"x":11.62,"y":-14.37},{"time":1.8,"x":13.84,"y":-5.83},{"time":1.8333,"x":17.54,"y":10.85},{"time":1.8667,"x":15.56,"y":15.83},{"time":1.9,"x":9.28,"y":22.98},{"time":1.9333,"x":-1.92,"y":27.57}],"scale":[{"time":0,"x":0.743,"y":1.34},{"time":0.3,"x":0.623,"y":0.653},{"time":0.5333,"x":0.345,"y":0.362},{"time":0.6667,"x":0.433,"y":0.454},{"time":0.8333,"x":0.527,"y":0.552},{"time":0.9333,"x":0.407,"y":0.427},{"time":0.9667,"x":0.274,"y":0.287},{"time":1.0333,"x":0.407,"y":0.427},{"time":1.0667,"x":0.349,"y":0.366},{"time":1.1,"x":0.392,"y":0.41},{"time":1.1333,"x":0.353,"y":0.37},{"time":1.1667,"x":0.434,"y":0.455},{"time":1.2,"x":0.353,"y":0.37},{"time":1.2333,"x":0.455,"y":0.477},{"time":1.2667,"x":0.372,"y":0.39},{"time":1.3333,"x":0.244,"y":0.251},{"time":1.3667,"x":0.184,"y":0.192},{"time":1.4333,"x":0.165,"y":0.209},{"time":1.5667,"x":0.271,"y":0.344},{"time":1.6,"x":0.318,"y":0.344},{"time":1.6667,"x":0.436,"y":0.472},{"time":1.7,"x":0.341,"y":0.369},{"time":1.7667,"x":0.282,"y":0.306},{"time":1.8,"x":0.221,"y":0.239},{"time":1.8333,"x":0.171,"y":0.186},{"time":1.9,"x":0.302,"y":0.378},{"time":1.9333,"x":0.401,"y":0.517}]}},"transform":{"eye":[{"time":0,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0}],"eye-root":[{"time":0,"translateMix":0,"curve":"stepped"},{"time":1.2667,"translateMix":0,"scaleMix":0},{"time":1.3,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0}],"jaw":[{"time":0,"rotateMix":0,"scaleMix":0,"curve":"stepped"},{"time":1.2667,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0}]},"deform":{"default":{"burst-bg":{"alien/burst03-bg":[{"time":1.3,"offset":46,"vertices":[0.68384,5.64643,41.70734,46.50797,26.72791,67.89645]},{"time":1.3333,"vertices":[-1.73277,76.35558,-2.70367,88.34904,7.16451,81.63237,9.10474,71.60054,26.89132,41.93319,33.82707,14.16541,42.66042,2.01306,46.27941,-10.28481,40.8448,-13.92924,36.71939,-16.69566,36.99004,-19.80729,35.77646,-27.02861,32.51794,-22.78155,22.48866,-24.67291,17.67539,-78.5826,16.74049,-86.95723,33.88027,-93.50364,44.06644,-106.10403,38.59086,-115.00684,17.31061,-128.65402,6.34872,-121.58191,-23.11713,-102.43536,-44.83045,-86.50071,-38.39915,-54.1526,16.74898,10.60439,-7.97856,43.28199,0,0,-46.02549,22.32263,-41.83277,33.20684,-42.38047,80.06304,-32.91348,84.33014,-0.21538,78.17695,-19.0481,83.3494,-18.36562,63.1656,18.65974,41.84681,30.39143,-11.8921,16.57042,-72.18506,21.1253,-102.59708,-2.00249,-93.5976,-7.29897,-84.15235,-5.88057,-72.98954,22.63989,2.5323,31.70975,2.10254,3.04899,79.57899,16.0296,56.81528,10.8523,52.89594,-18.72171,73.69634,-30.13412,70.48869,-34.63183,64.61971]},{"time":1.3667,"vertices":[-28.63036,36.53115,-35.20681,39.71266,-34.16557,29.09573,-39.9383,22.02063,-31.8683,-0.66902,-36.18404,-31.92518,-39.46505,-44.94416,-45.83144,-54.46854,-51.44376,-52.82608,-55.70403,-51.5793,-57.68414,-53.54662,-47.87902,-55.91557,-62.2854,-52.18085,-69.32556,-46.38197,-64.856,-74.20721,-73.91029,-84.11636,-57.97267,-108.61402,-56.66564,-134.3905,-72.063,-140.7236,-108.18388,-132.31097,-111.6678,-115.80203,-138.59677,-66.23582,-149.73697,-34.55333,-122.68817,-4.89592,-46.63315,37.9272,-21.80757,67.6336,-19.94474,-4.60975,-42.24004,-1.19647,-42.70224,0.25723,-54.4291,31.54441,-53.01079,55.72008,-33.87254,45.68143,-45.22352,54.63241,-47.81532,37.10542,-36.64058,4.92978,-56.03099,-44.48704,-60.28207,-64.93195,-82.92386,-108.36906,-104.27381,-75.09884,-102.24123,-57.96945,-89.95052,-44.92264,-50.57152,-30.90934,-45.67356,-37.37893,-37.93099,30.74406,-27.8756,15.30476,-33.52905,16.61335,-46.03555,45.07694,-50.16603,32.58026,-44.19556,25.76055]},{"time":1.4,"vertices":[-85.06468,-33.90498,-101.8331,-38.83959,-112.78791,-50.47047,-126.45663,-50.92437,-127.01215,-61.43593,-146.0162,-92.23505,-163.93832,-101.35416,-180.9555,-103.55012,-184.62927,-95.59962,-187.41797,-89.56448,-191.58801,-89.26762,-171.10568,-84.34687,-194.57843,-82.7303,-194.96826,-69.07529,-178.86887,-66.78349,-196.6018,-76.86019,-185.05325,-119.74084,-195.25043,-157.60983,-220.47452,-159.54361,-268.10382,-125.68286,-262.18945,-100.70921,-281.1634,-20.07929,-278.5943,26.06285,-230.66162,49.32256,-132.58997,66.78984,-53.07204,87.58773,-39.88947,-9.2195,-52.80638,-43.75304,-59.20331,-55.2477,-82.96741,-46.30116,-92.66891,-5.33385,-96.56309,-15.88346,-95.87802,-6.14105,-101.76718,-13.39593,-125.39429,-50.537,-179.73691,-82.21091,-167.9089,-55.52215,-221.00143,-107.68742,-236.25949,-49.5895,-225.28995,-25.78461,-201.40793,-12.69044,-159.03928,-74.99959,-161.5159,-86.89804,-114.6363,-44.59824,-105.05503,-50.20983,-109.14633,-42.54154,-97.87101,-11.87038,-90.83913,-31.73106,-73.43052,-37.16026]},{"time":1.4667,"vertices":[-119.68082,-102.37854,-149.89587,-110.40956,-172.77509,-117.52663,-190.96182,-108.04595,-194.19272,-102.98049,-227.02118,-126.63018,-257.14905,-125.33231,-280.99283,-115.65919,-279.93173,-102.56793,-279.1262,-92.63052,-284.35373,-89.16964,-270.5389,-80.7443,-283.44174,-78.4277,-273.88754,-60.30602,-256.70236,-50.08109,-276.6675,-56.01134,-275.07828,-101.33076,-293.96286,-136.64569,-319.4999,-132.74673,-357.70126,-87.02367,-345.37234,-64.4873,-347.38345,20.00406,-334.4379,63.11477,-284.41574,74.71045,-185.04947,86.74957,-92.86766,94.20273,-69.16657,-1.32112,-70.14582,-63.49519,-74.40994,-83.94076,-88.93673,-89.82903,-97.40413,-65.52103,-129.96956,-80.05418,-113.19644,-72.6012,-130.69727,-59.55135,-184.04749,-89.93822,-263.6749,-88.68695,-243.20096,-41.40928,-308.054,-81.0432,-309.8206,-19.73067,-293.41415,1.41627,-266.63583,8.92852,-231.32803,-94.52206,-243.33133,-108.23704,-170.86154,-108.49509,-157.24203,-104.50037,-156.9343,-91.46993,-121.21587,-68.245,-109.71011,-75.48093,-95.92812,-74.18189]},{"time":1.5333,"vertices":[-145.09042,-120.86653,-194.807,-124.12709,-227.58821,-123.64662,-245.38031,-109.42378,-241.22562,-98.32921,-300.08417,-98.24397,-341.96143,-86.69765,-372.27563,-67.88405,-366.50287,-53.5891,-362.12085,-42.73803,-368.32843,-37.11354,-366.9734,-25.57621,-363.53375,-25.39778,-337.1137,-11.72807,-331.9942,-34.44117,-361.1655,-27.75139,-406.08472,-61.58719,-454.9775,-82.32776,-487.42798,-56.00835,-499.3933,15.00478,-466.21674,30.42004,-401.37433,108.20853,-355.24493,142.60115,-317.21164,112.3073,-216.67148,120.82071,-112.34171,116.20989,-78.34355,17.64208,-68.12334,-64.39978,-70.4538,-90.65836,-102.69727,-118.85889,-122.5974,-95.52684,-172.15723,-83.88164,-149.11832,-91.07712,-140.44006,-71.20289,-240.89162,-83.7411,-339.13574,-43.50141,-297.22635,-2.45705,-434.9395,-15.80909,-381.72412,39.40601,-345.54404,49.90036,-310.70377,48.50959,-295.627,-60.86879,-316.96753,-72.19572,-232.74759,-111.47705,-199.5794,-108.69385,-194.88446,-94.21463,-152.81549,-81.31654,-129.98297,-92.74498,-99.23401,-82.98563]},{"time":1.6333,"vertices":[-158.85898,-157.88821,-222.41895,-171.88745,-265.61752,-163.54323,-295.0162,-162.22234,-298.79596,-131.13844,-362.79938,-138.7018,-433.25107,-98.61046,-477.58896,-33.0961,-464.7487,-16.99556,-455.00192,-4.77399,-462.6796,4.09592,-465.00198,23.43459,-452.06088,17.27241,-418.03323,32.78734,-397.86447,53.22706,-423.10776,55.14351,-445.94412,15.30367,-485.93863,-8.62939,-511.99594,3.77512,-526.6751,57.78288,-498.78177,71.13768,-459.2037,145.88376,-421.043,175.42703,-366.40555,168.70264,-264.10452,171.92749,-141.5528,149.22067,-92.10904,46.08691,-65.08963,-65.75665,-64.51958,-100.73477,-57.10714,-135.81528,-63.258,-136.1058,-166.01343,-130.57944,-110.04475,-140.76263,-155.05429,-88.68021,-270.2941,-110.81262,-420.71603,-12.59779,-378.2645,55.97136,-471.31558,44.54113,-439.99777,98.30469,-410.42368,110.83441,-376.80576,107.88126,-360.46457,-47.26363,-381.6778,-75.78871,-260.41815,-159.90727,-228.69894,-152.92683,-221.67581,-132.34021,-132.3599,-116.78691,-109.39954,-110.22609,-104.19286,-96.19125]}]},"eye-pupil":{"alien/eye-pupil":[{"time":1.9311},{"time":1.9333,"offset":2,"vertices":[4.47624,1.75668,-5.43562,-0.09229,-6.1716,-0.11565,3.39568,0.18896]}]},"eyeball":{"alien/eye":[{"time":1.9234},{"time":1.9333,"vertices":[2.30195,4.84045,-6.24465,24.31509,-18.24174,22.2739,-30.77019,23.47581,-33.87926,23.45443,-38.95153,23.98627,-34.9502,18.64992,-30.14416,12.82236,-21.8173,-2.96754,-13.31968,1.1067,-2.10858,1.39288,2.42243,-1.84196,5.94919,-4.52369,9.8671,-7.50283,12.31492,-9.3641,14.6324,-11.12628,15.38972,-11.70213,16.13764,-12.27084,14.59378,-11.09693,13.00154,-9.88621,9.17395,-6.97573,5.57406,-4.23845,-9.94695,0.20264,-9.94721,0.20223,-25.47261,11.38448,-25.47296,11.38448,-31.46003,19.05132,-31.4604,19.05161,-27.36235,20.51298,-27.36279,20.51315,-9.49651,17.27551,-9.49667,17.27538,-1.68325,1.85822,-1.68365,1.85748,3.8709,-2.94338,3.87091,-2.94342,10.27974,-7.8166,10.27979,-7.81664,12.74799,-9.69339,12.74804,-9.69345,11.99189,-9.11849,11.99193,-9.11852,7.5319,-5.72716,7.53192,-5.72721,0.38781,-0.3073,0.38766,-0.30762,7.06353,-5.37103,7.06358,-5.37108,11.38696,-8.65849,11.38698,-8.65854,12.36788,-9.40434,12.36791,-9.4045,9.76295,-7.42364,9.76303,-7.42368,4.6788,-3.55771,4.67889,-3.55776,-1.80754,1.19403,-1.80772,1.19377,-19.09809,2.46482,-19.09858,2.46502,-28.60839,15.39989,-28.60876,15.40005,-29.13958,19.87903,-29.1399,19.87918,-16.33226,19.23055,-16.33257,19.23074,3.91371,13.28555,-4.99462,8.72512,-4.99503,8.72488,0.48935,-0.51892,-0.96208,0.58485,-0.96218,0.58458,-8.55228,8.23908,-8.55267,8.23903,2.68275,-2.08037,2.68275,-2.08083,3.48771,-2.65166,3.48763,-2.65211,2.74517,-2.11385,2.74507,-2.11432,1.22514,-1.01873,1.22504,-1.01915,-1.78653,1.18036,-1.78666,1.1801,-3.90304,0.99792,-3.90348,0.99728,-8.0176,3.28572,-8.01794,3.28543,-10.92476,5.07293,-10.92514,5.0727,-14.40496,7.53363,-14.40521,7.53322,-18.1622,10.59957,-18.16252,10.59935,-22.38956,14.13091,-22.38988,14.13076,-24.60171,16.46433,-24.60199,16.46445,-25.20555,17.09343,-25.20588,17.09342,-22.75626,17.1347,-22.75659,17.13467,-21.20954,17.0104,-21.20993,17.01039,-17.62271,16.1749,-17.62304,16.1748,-15.49942,15.71741,-15.49973,15.71711,-11.04413,13.37115,-11.04425,13.37096,-8.16751,11.73045,-8.16785,11.73016,-4.56702,9.33353,-4.56739,9.33321,-1.3697,7.00007,-1.37008,6.99982,-2.7477,1.81529,-2.74784,1.815,-0.36564,0.09844,-0.36574,0.09808,1.04679,-0.91141,1.04672,-0.91181],"curve":[0.612,0,0.961,0.85]},{"time":2.0333,"vertices":[3.24275,7.91407,-10.90369,19.33402,-18.24174,22.2739,-30.77019,23.47581,-33.87926,23.45443,-38.95153,23.98627,-34.9502,18.64992,-30.14416,12.82236,-20.97651,2.92524,-14.81287,0.26187,-2.10858,1.39288,-0.4933,4.43934,-0.07114,5.34762,0.3979,6.35674,1.12204,6.63992,1.80758,6.90797,2.65722,6.49156,3.49633,6.08028,4.25356,4.92377,5.03446,3.73087,5.57333,1.94191,6.08008,0.25922,-11.13084,-0.60674,-11.13115,-0.60712,-25.47261,11.38448,-25.47296,11.38448,-31.46003,19.05132,-31.4604,19.05161,-27.36235,20.51298,-27.36279,20.51315,-9.49651,17.27551,-9.49667,17.27538,-0.40323,5.37477,-0.40364,5.37405,5.67802,-0.01979,5.67812,-0.01985,4.82932,2.93262,4.82941,2.93254,3.51867,4.86237,3.51881,4.8623,2.12682,5.71601,2.12693,5.71597,0.8497,5.16611,0.84982,5.16597,0.16973,3.38345,0.16969,3.38303,5.25523,1.45103,5.25537,1.45089,4.24138,3.79829,4.24154,3.79819,2.81897,5.29156,2.81905,5.29148,1.48856,5.4412,1.48872,5.44109,0.55169,4.39623,0.55186,4.39612,-1.80754,1.19403,-1.80772,1.19377,-19.09809,2.46482,-19.09858,2.46502,-28.60839,15.39989,-28.60876,15.40005,-29.13958,19.87903,-29.1399,19.87918,-16.33226,19.23055,-16.33257,19.23074,-1.51704,11.7206,-4.92833,11.02434,-4.92876,11.0241,4.60013,-0.04099,4.35205,-0.18725,4.35202,-0.18759,-8.55228,8.23908,-8.55267,8.23903,3.38354,1.49375,3.38358,1.49323,3.39127,1.68725,3.39128,1.68668,2.738,2.00672,2.738,2.00632,1.74714,2.39383,1.74712,2.39344,0.59517,2.73257,0.59512,2.73225,-3.90304,0.99792,-3.90348,0.99728,-8.0176,3.28572,-8.01794,3.28543,-10.92476,5.07293,-10.92514,5.0727,-14.40496,7.53363,-14.40521,7.53322,-18.1622,10.59957,-18.16252,10.59935,-22.38956,14.13091,-22.38988,14.13076,-24.60171,16.46433,-24.60199,16.46445,-25.20555,17.09343,-25.20588,17.09342,-22.75626,17.1347,-22.75659,17.13467,-21.20954,17.0104,-21.20993,17.01039,-17.62271,16.1749,-17.62304,16.1748,-15.49942,15.71741,-15.49973,15.71711,-11.04413,13.37115,-11.04425,13.37096,-8.16751,11.73045,-8.16785,11.73016,-4.56702,9.33353,-4.56739,9.33321,-1.3697,7.00007,-1.37008,6.99982,1.81303,1.42351,1.81299,1.42317,2.54668,1.37999,2.54664,1.37957,2.96464,1.409,2.96464,1.40857]},{"time":2.1,"vertices":[3.24275,7.91407,-10.90369,19.33402,-18.24174,22.2739,-30.77019,23.47581,-33.87926,23.45443,-38.95153,23.98627,-34.9502,18.64992,-30.14416,12.82236,-20.97651,2.92524,-14.81287,0.26187,-2.10858,1.39288,0.47545,-0.3615,1.21325,-0.92252,2.03287,-1.5458,2.54498,-1.93515,3.0298,-2.30381,3.18821,-2.42429,3.34468,-2.54327,3.0217,-2.29768,2.68859,-2.04442,1.88788,-1.43551,1.13477,-0.8629,-11.13084,-0.60674,-11.13115,-0.60712,-25.47261,11.38448,-25.47296,11.38448,-31.46003,19.05132,-31.4604,19.05161,-27.36235,20.51298,-27.36279,20.51315,-9.49651,17.27551,-9.49667,17.27538,-0.40323,5.37477,-0.40364,5.37405,0.77848,-0.59193,0.7785,-0.59198,2.11919,-1.61148,2.11925,-1.61153,2.63555,-2.00404,2.6356,-2.0041,2.47738,-1.8838,2.47744,-1.88381,1.54435,-1.1743,1.54437,-1.17445,-0.08939,0.05556,-0.08952,0.0552,1.44635,-1.09981,1.44643,-1.0999,2.35082,-1.78755,2.35091,-1.78761,2.55606,-1.94357,2.55609,-1.94361,2.01108,-1.52922,2.01118,-1.52928,0.94748,-0.72044,0.94757,-0.72051,-1.80754,1.19403,-1.80772,1.19377,-19.09809,2.46482,-19.09858,2.46502,-28.60839,15.39989,-28.60876,15.40005,-29.13958,19.87903,-29.1399,19.87918,-16.33226,19.23055,-16.33257,19.23074,-1.51704,11.7206,-4.92833,11.02434,-4.92876,11.0241,-1.09258,0.68392,-1.43501,0.94445,-1.43511,0.94416,-8.55228,8.23908,-8.55267,8.23903,0.207,-0.19785,0.207,-0.19832,0.69833,-0.53062,0.69828,-0.53114,0.3305,-0.27785,0.33043,-0.27822,-0.46798,0.26863,-0.46804,0.2683,-1.78653,1.18036,-1.78666,1.1801,-3.90304,0.99792,-3.90348,0.99728,-8.0176,3.28572,-8.01794,3.28543,-10.92476,5.07293,-10.92514,5.0727,-14.40496,7.53363,-14.40521,7.53322,-18.1622,10.59957,-18.16252,10.59935,-22.38956,14.13091,-22.38988,14.13076,-24.60171,16.46433,-24.60199,16.46445,-25.20555,17.09343,-25.20588,17.09342,-22.75626,17.1347,-22.75659,17.13467,-21.20954,17.0104,-21.20993,17.01039,-17.62271,16.1749,-17.62304,16.1748,-15.49942,15.71741,-15.49973,15.71711,-11.04413,13.37115,-11.04425,13.37096,-8.16751,11.73045,-8.16785,11.73016,-4.56702,9.33353,-4.56739,9.33321,-1.3697,7.00007,-1.37008,6.99982,-2.7477,1.81529,-2.74784,1.815,-1.53276,0.98591,-1.53285,0.98552,-0.72917,0.43901,-0.72926,0.43862]},{"time":2.1667,"vertices":[3.24275,7.91407,-10.90369,19.33402,-18.24174,22.2739,-30.77019,23.47581,-33.87926,23.45443,-38.95153,23.98627,-34.9502,18.64992,-30.14416,12.82236,-20.97651,2.92524,-14.81287,0.26187,-2.10858,1.39288,-1.74232,1.39981,-0.33504,1.14755,1.22828,0.86729,2.52186,0.44093,3.74653,0.03722,4.60654,-0.45946,5.45589,-0.94996,5.53217,-1.3887,5.6108,-1.84122,4.8163,-2.14865,4.06898,-2.43792,-11.13084,-0.60674,-11.13115,-0.60712,-25.47261,11.38448,-25.47296,11.38448,-31.46003,19.05132,-31.4604,19.05161,-27.36235,20.51298,-27.36279,20.51315,-9.49651,17.27551,-9.49667,17.27538,-0.40323,5.37477,-0.40364,5.37405,3.24374,-2.20052,3.24379,-2.20058,4.61343,-1.71692,4.61352,-1.717,4.41793,-0.95703,4.41801,-0.95714,3.15983,-0.14434,3.15992,-0.14439,0.83397,0.60798,0.83404,0.6078,-1.96106,1.21719,-1.96115,1.21683,3.92605,-1.95956,3.92619,-1.95968,4.52572,-1.37605,4.52586,-1.37612,3.78548,-0.54843,3.78557,-0.5485,1.99743,0.23164,1.99757,0.23158,-0.27251,0.78668,-0.27241,0.78658,-1.80754,1.19403,-1.80772,1.19377,-19.09809,2.46482,-19.09858,2.46502,-28.60839,15.39989,-28.60876,15.40005,-29.13958,19.87903,-29.1399,19.87918,-16.33226,19.23055,-16.33257,19.23074,-1.51704,11.7206,-4.92833,11.02434,-4.92876,11.0241,1.4674,-1.45463,0.75603,-1.12101,0.75596,-1.12132,-8.55228,8.23908,-8.55267,8.23903,1.20663,-0.8295,1.20665,-0.83001,1.4439,-0.86632,1.44389,-0.86688,0.74517,-0.46391,0.74515,-0.46432,-0.4279,0.16244,-0.42794,0.16207,-2.09786,1.05663,-2.09795,1.05634,-3.90304,0.99792,-3.90348,0.99728,-8.0176,3.28572,-8.01794,3.28543,-10.92476,5.07293,-10.92514,5.0727,-14.40496,7.53363,-14.40521,7.53322,-18.1622,10.59957,-18.16252,10.59935,-22.38956,14.13091,-22.38988,14.13076,-24.60171,16.46433,-24.60199,16.46445,-25.20555,17.09343,-25.20588,17.09342,-22.75626,17.1347,-22.75659,17.13467,-21.20954,17.0104,-21.20993,17.01039,-17.62271,16.1749,-17.62304,16.1748,-15.49942,15.71741,-15.49973,15.71711,-11.04413,13.37115,-11.04425,13.37096,-8.16751,11.73045,-8.16785,11.73016,-4.56702,9.33353,-4.56739,9.33321,-1.3697,7.00007,-1.37008,6.99982,-2.7477,1.81529,-2.74784,1.815,-0.29255,-0.23069,-0.29261,-0.23111,0.42445,-0.52553,0.42439,-0.52595]}]},"head":{"alien/head":[{"time":0},{"time":0.2,"vertices":[13.75111,4.85142,24.32014,1.12376,26.01038,9.53201,30.68427,18.44095,24.90535,25.67038,8.98901,37.05399,1.21941,32.73833,2.0E-5,1.0E-5,2.0E-5,2.0E-5,1.0E-5,2.0E-5,0,1.0E-5,0,1.0E-5,0,0,0,0,-6.6898,9.80194,-5.05742,9.26561,-4.96629,11.48915,-6.59993,23.32903,-12.01232,20.66869,-16.25858,19.40443,-12.71413,14.54102,-5.93674,14.7163,0.11565,15.91503,5.36177,14.31557,4.48566,-2.46352,-1.42722,-2.03418,-1.0E-5,0,0,0,-3.61057,7.04752,-3.51703,9.89339,30.78316,3.77597,79.82353,18.92043,55.77951,17.95429,50.40761,34.94055,50.55713,39.23791,61.27519,44.92727,79.54408,32.56362,18.54898,18.91411,6.64247,30.16319,-16.43497,10.62154,-13.17729,14.75938,51.7993,-0.26025,18.34035,2.16159,28.03456,7.0585,3.33049,-2.35816,2.00232,0.76244,11.03924,5.39703,31.70125,3.61331,19.72183,2.9424,-3.03603,7.64153,1.0E-5,1.0E-5,25.98085,4.27312,8.4198,0.44305,-6.60401,-1.06753,0,0,0,0,4.6051,0.5287,9.93486,10.03566,27.98062,7.05276,38.33069,6.80178,31.15146,9.09935,12.24789,4.55832,11.94951,6.85835,17.77548,7.54866,30.17921,-0.17654,38.40248,6.66553,28.92384,10.24368,16.81825,6.69662,9.21013,1.0574,2.04581,-0.27795,13.95413,15.73528,-1.43007,0.10522,-2.08388,0.08258,0,0,1.17355,0.34741,18.39603,0.88033,0,0,11.41278,11.51308,-2.88608,1.10176,-1.57054,-0.07635,-0.16765,-0.08842,0,0,7.97186,1.1478,3.2681,4.46464,36.27831,5.03716,36.27831,5.03716,36.66379,8.15264,37.1739,6.85481,-1.85954,3.00225,23.87404,7.3959,-1.38234,0.20156,-2.22337,-0.03172,-1.65433,-0.1206,-2.57883,-0.60804,-0.02429,1.84338,-2.52748,0.95428,-1.16122,0.25819,6.62007,11.85163,4.22813,10.46403,0,0,-1.81659,32.37084,9.25679,35.75591,26.71053,23.73249,32.4342,19.81351,29.77367,7.60575,24.80023,8.73225,13.30579,10.78311,-0.70573,5.85449,-1.23865,14.09991,-15.53979,14.14754,-18.412,20.94823]}],"alien/burst01":[{"time":0.2333,"offset":44,"vertices":[12.08273,0.42989,5.85635,-3.15448,-14.58395,-14.16644,-42.0544,-27.86382,-61.27995,-40.99558,-54.93826,-31.80959,-24.33878,-17.19197,-6.21338,-8.34913,8.88202,-1.20689,2.66962,-4.62145,-10.58348,-11.60531,-20.12813,-16.53806,-26.57732,-19.76444,-33.7876,-23.26907,-39.09344,-25.70451,-41.505,-26.56489,-37.31277,-24.04845,-31.3895,-20.91614,0,0,4.10197,6.42991,0.58853,3.21655,5.11995,1.45657,2.49861,11.11131,0,0,0,0,0,0,0,0,-68.36334,-38.3297,-67.35854,-38.94537,7.82242,-1.80934,-54.96565,-36.99145,-65.9529,-39.90656,0,0,-29.34291,-21.60076,0,0,0,0,9.88068,-0.88555,0,0,0,0,0,0,12.89357,21.77497,3.83153,26.02618,-0.55229,28.95589,1.87724,-4.479,3.44228,-3.58939,-5.18176,-7.73711,-14.47705,-12.29416,-14.90198,-12.60027,-24.13503,-17.19472,-32.4474,-21.35122,-39.36365,-25.00894,-42.93295,-27.00154,-44.21417,-27.91209,-43.46233,-27.74467,-41.228,-26.81248,-38.70844,-25.67925,-34.65059,-23.76439,-30.60744,-21.8201,-26.88924,-19.99747,-23.02391,-18.08309,-19.22693,-16.16058,-13.5432,-13.25327,-9.36305,-11.06808,-2.38658,-7.40237,4.07083,-3.98443,-4.01335,-8.14338,-15.29329,-14.03935,-23.64859,-18.29926,-30.44191,-21.64285,-36.72517,-24.61744,-40.77979,-26.38342,-40.24191,-25.70207,-53.38672,-32.65142,-58.2805,-35.49346,-54.82005,-36.28709,-45.14799,-29.4385,-40.00992,-25.16666,-22.88824,-18.13795,-27.52473,-20.43511,-31.89749,-22.57889,-35.66429,-24.40355,-40.04185,-26.53755,-46.29327,-30.89571,-56.60077,-38.35271,-61.87022,-38.36944,-59.29791,-35.64544]},{"time":0.4333,"vertices":[40.54706,18.65558,38.06252,24.40632,27.65821,24.06248,16.09364,21.12307,6.57109,-0.3765,20.56963,-20.16034,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.57057,1.29805,0,0,1.18316,12.96902,11.88604,5.83296,19.81404,-0.12758,31.30681,4.98151,27.94331,0.83968,45.36443,5.16258,44.82766,19.18138,39.82458,-0.78847,0.56605,27.18461,4.84359,27.031,9.96158,40.96053,14.51502,35.36584,43.19155,-23.34477,46.56367,-22.69795,41.00872,-11.5978,38.11973,0.52029,10.31166,18.63938,3.20829,35.77074,3.08008,42.51454,7.03522,50.63188,32.48734,61.44403,50.61159,45.50713,56.06839,27.62417,58.40731,-3.67759,54.33757,-12.62103,26.68567,-7.81141,17.76682,23.94729,19.63043,27.02727,19.98313,30.44666,37.22532,28.55745,44.63566,19.18997,38.74739,-2.13748,14.80871,-11.43229,46.14268,15.4712,24.31715,12.62191,30.52795,-10.37407,22.00648,14.14368,5.84632,41.59464,16.12791,29.77016,45.7781,21.164,11.69496,43.37859,-0.82077,2.58945,-0.68969,-0.1915,19.50694,8.32717,-3.03913,-0.59166,2.29238,-1.61308,2.24205,7.7463,27.09621,42.43314,13.94484,47.09381,7.50664,30.2716,38.78389,-4.95724,40.50175,-8.41444,39.27843,-11.80223,42.26198,-18.93701,41.15641,-15.96172,45.61419,-19.41041,54.82236,-15.52848,58.18858,-5.62221,58.66469,8.2961,55.00331,27.52796,53.25496,34.06676,52.82998,44.95584,32.88763,61.04887,24.56279,61.63552,18.94136,60.29522,6.14145,53.07735,0.90195,45.72404,2.73484,44.77526,4.4589,40.7398,2.99844,38.01129,2.40748,29.50703,7.3909,17.21804,2.4403,27.30689,5.64411,39.70188,1.59144,42.72276,17.94904,59.72688,34.41533,58.73611,54.58006,33.30026,59.33932,9.6127,47.43507,6.32447,40.40736,21.28833,32.71583,39.14765,29.18468,52.61752,25.54237,57.98509,8.51183,47.33889,6.32254,48.8425,6.83596,54.05988,8.63521,55.39858,12.18268,55.04446,25.42243,49.9039,29.89964,34.52418,34.39793,18.36047,42.0993,4.18422,20.75233,6.80875]},{"time":0.4667,"vertices":[47.3049,21.76485,44.40627,28.47404,32.26791,28.0729,18.77591,24.64358,0,0,6.15318,19.76164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.83234,1.5144,0,0,1.38036,15.13052,13.86705,6.80511,23.11638,-0.14884,36.52461,5.81176,32.60052,0.97962,52.92517,6.02301,52.29893,22.37827,45.13234,-1.49643,0.36846,31.73622,8.76564,33.39234,19.31503,51.92636,27.37635,46.68877,60.23064,-22.43886,59.06487,-24.12051,49.56319,-12.64415,43.6768,0.30326,12.26945,22.01128,6.19104,43.16184,7.63224,51.85173,13.32143,61.85971,44.21729,75.05798,66.24655,56.87083,73.01474,36.15078,75.04478,-0.78735,69.30954,-11.74341,6.99788,18.18582,20.0443,26.86685,22.80408,30.99572,22.46033,35.27834,43.01311,31.46513,52.07494,22.3883,45.20529,-2.49372,17.27682,-13.33767,53.83313,18.04973,39.67324,20.46646,46.62216,-6.53596,25.05461,16.29762,16.19243,53.46538,29.99724,40.46952,53.40778,24.69133,19.21873,53.70358,-0.95757,3.02103,-0.80464,-0.22341,21.79544,9.35772,-3.54565,-0.69027,2.67444,-1.88193,2.61572,9.03735,29.46332,45.87617,15.63039,50.60509,8.84979,30.49088,45.61912,-5.54185,47.36246,-9.72351,47.37259,-12.98466,52.4026,-20.54906,51.18359,-17.02686,57.92318,-20.2846,70.05144,-15.06292,75.13141,-2.89599,76.28175,13.67413,72.22368,36.26307,70.05863,43.86377,69.19043,56.41232,45.50443,74.99865,35.11581,75.36394,27.88362,73.4762,12.33069,64.75158,5.57372,55.85366,7.07925,54.42634,8.14337,49.23374,5.74281,45.68628,3.89062,35.15369,8.62836,20.24689,4.20003,32.71037,9.8178,48.15385,6.48223,52.38819,26.69831,72.78359,46.9562,72.12347,71.15749,42.74264,76.62032,14.9936,64.92282,12.31555,57.53946,30.24706,47.98927,51.2152,42.25758,65.78861,37.15187,71.33881,14.4293,57.7468,12.64787,59.88387,13.97566,66.32811,16.70258,68.19404,21.57089,68.13657,38.05918,62.8656,44.90455,46.17664,51.12674,27.31055,59.68296,10.3176]}],"alien/burst02":[{"time":0},{"time":0.4667,"vertices":[8.44717,-2.62617,-1.66246,-4.14964,2.94254,-7.04154,5.43728,-12.78315,6.10036,-18.48962,5.03693,-22.15525,6.39308,-34.54789,1.08167,-12.05763,0.60547,-7.26038,2.70239,-7.06268,0.03775,-4.26562,-1.33082,-5.03856,-7.04628,-8.33144,-1.5994,-7.02762,-4.01076,-8.73213,-6.70195,-2.17461,-5.16911,-3.3867,0,0,0,0,0,1.0E-5,0,0,0,0,53.98294,8.16872,4.19673,-12.93417,5.58393,-0.11341,2.0E-5,2.0E-5,3.54045,2.07458,-15.35167,-4.98116,-15.42085,-5.00362,-13.12766,-4.25951,-8.88725,-2.88364,-3.40128,-1.10363,0,0,0,0,0,0,0,0,-3.08499,-1.00098,-7.07841,-2.29671,-11.06462,-3.59012,-13.84425,-4.49206,-13.59177,-4.41013,-11.64641,-3.77888,-11.41626,-3.70422,-6.25803,-2.03055,-0.99994,-0.32445,0,0,-14.72412,-4.77753,-0.06894,0.21213,0,0,-1.03012,-0.33424,-5.19464,-1.68551,-9.35083,-3.03407,-12.43961,-4.03627,-14.68713,-4.76553,-9.12651,-2.96127,-6.09276,-1.9769,-2.87253,-0.93205,-0.18369,-0.05959,0,0,0,0,0.63629,0.20649,2.61421,0.61389,0,0,0,0,-0.63936,-0.20744,-2.90279,-0.94186,-5.07756,-1.64752,-7.18002,-2.3297,-9.64198,-3.12851,-11.40277,-3.69983,-13.09242,-4.24809,-14.50929,-4.70782,-15.63478,-5.07301,-16.40764,-5.32377,-16.40135,-5.32175,-15.46948,-5.0194,-7.22081,-2.34293,5.35602,-16.36661,3.39207,-12.22933,5.45975,-6.70846,-2.92706,-5.23907,4.60506,-4.3091,4.54066,-2.75301,8.24759,-13.26923,36.28853,8.47557,2.93465,-22.105,3.06993,-32.32308,4.05841,-8.09658,1.39204,-3.86498,2.66722,0.06961,-1.26559,-1.43877,-3.96754,-2.06429,-4.6916,-3.65018,-1.49208,-4.39505,-1.9169,-4.33731,-8.59688,-3.35921]},{"time":0.5667,"offset":2,"vertices":[0.55742,4.5388,4.61954,11.94549,19.69821,11.25572,17.98706,9.40695,18.03621,4.71638,16.60943,-4.66644,12.07512,-4.87935,8.63758,-1.62173,11.13341,-1.9513,9.96385,-3.6386,10.91671,-5.69052,2.31715,-4.1672,0,0,0,0,0,0,0,0,0,0,0,0,0,1.0E-5,0,0,14.68109,-2.59258,46.7749,-16.08387,-11.40092,-22.3923,-14.34756,-5.54877,2.0E-5,2.0E-5,8.12662,0.38493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.04826,0.14849,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4454,0.14454,1.82995,0.42972,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15.96719,9.33518,16.30797,12.00871,7.02026,10.42611,1.17055,5.32005,-0.68335,1.22897,-6.86345,-5.12416,1.56529,-11.20049,36.93623,-9.74122,15.83783,4.29235,14.99457,-2.1606,12.00398,-2.84351,9.549,-2.46903,8.39969,-3.43277,8.83499,-3.87868,7.49269,-6.96484]},{"time":0.8,"vertices":[-0.26183,5.74663,-2.28078,7.20129,5.75565,14.6267,23.17381,9.11411,26.18849,3.43199,22.84949,2.17424,22.67816,-7.66858,20.79485,-5.90974,19.69392,0.13771,13.30333,-9.10894,15.08726,-8.277,-0.23314,-22.08472,-11.88261,-14.95191,-2.10322,-12.20714,-4.33761,-9.91582,0,0,0,0,0,0,0,0,0,1.0E-5,0,0,0,0,38.42324,-12.28841,-12.92033,-4.63375,-3.80882,7.19092,2.0E-5,2.0E-5,24.66497,1.41425,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.62634,5.77114,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,18.23075,7.88931,19.32123,6.37689,19.32123,6.37689,19.32123,6.37689,24.49674,5.37766,19.34924,10.11178,8.89436,12.75521,0.25719,6.51787,-3.04557,5.42747,-2.94852,5.1211,-9.0126,-3.34344,19.91956,-11.78638,21.28212,2.96197,21.91681,-4.27737,20.64548,-1.31097,20.69061,3.78262,14.9139,-6.25056,15.20506,-7.17007,1.61307,-20.79971,-5.61815,-14.72208,-1.40562,-12.31559,-3.77174,-9.03355]},{"time":1.2667,"vertices":[-0.60118,40.21666,13.21951,39.18164,29.47369,45.0315,56.76008,32.39156,63.27009,21.81733,62.03564,15.01811,64.11848,-1.57637,62.48392,-5.05509,62.0004,-3.32251,53.43962,-21.25206,49.83433,-22.08006,26.56342,-42.88687,6.75268,-37.41826,11.62914,-34.05639,3.79571,-30.49985,1.76681,-5.8581,3.41879,-2.25661,0,0,0,0,0,1.0E-5,0,0,0,0,20.66207,1.18949,-38.5212,-16.28236,-28.98003,29.90348,2.0E-5,2.0E-5,54.44005,-6.72733,76.40656,18.00246,72.74952,28.6037,61.75354,48.36436,52.07378,54.99824,44.73683,49.02092,38.58128,33.86156,43.56477,18.99028,49.0436,2.25867,58.29994,-10.54558,67.76347,-17.15362,75.02335,-17.88821,79.06823,-10.23586,79.9537,0.7427,61.61975,50.98802,56.37247,56.29552,57.21532,52.81435,47.85279,54.11208,43.02682,42.18958,42.66728,27.4078,68.10815,38.25859,45.63157,9.92648,53.55116,-5.10542,63.43682,-14.96118,71.54783,-17.55838,77.39485,-13.83996,79.59405,-5.05167,78.67317,8.41954,51.17966,58.6673,46.29943,57.67178,42.59077,52.48447,40.6232,44.98309,40.39751,36.26408,40.96192,28.17683,41.85824,19.31689,44.05618,9.44077,52.41975,-6.643,58.35233,-13.4062,63.75209,-17.73891,68.67623,-20.59882,72.70447,-21.37257,76.00245,-20.44646,76.86877,-16.17442,78.71053,-12.37278,80.48174,-7.37115,81.70876,-0.96352,80.67078,7.40256,76.75462,20.30871,74.09646,29.57249,68.3063,41.31281,59.06873,14.56583,60.39012,23.31939,51.33841,32.70986,32.27072,41.44254,15.71152,37.21485,6.32091,36.14613,-22.47176,26.23696,-28.75047,-8.63012,2.37231,-1.98877,61.72414,16.07718,64.43069,2.65221,66.21148,1.35978,67.08562,0.58398,57.63603,-20.88151,52.01707,-22.67115,28.06324,-40.17508,13.56615,-35.38068,12.38645,-33.03455,4.29317,-28.45454,9.75845,-17.98366]}],"alien/burst03-fg":[{"time":1.3},{"time":1.3333,"vertices":[4.92407,33.99561,5.00798,33.57872,5.12328,33.00543,5.48637,31.20123,6.74828,24.92905,7.53403,21.02349,8.43697,16.53606,9.75219,9.99911,10.97427,3.92524,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,6.69909,2.38814,23.66046,-7.08865,22.70099,-22.82669,25.84168,-38.43984,25.64882,-49.91971,20.14206,-58.28368,8.67352,-60.34131,-1.09209,-57.56573,-8.83326,-50.35564,-14.82484,-42.2756,-12.06253,-41.57684,-17.29308,-34.22359,-19.82881,-27.60732,-18.33358,-19.91221,-11.6693,-25.78771,-6.03783,-24.52315,-4.7291,-15.94568,-6.66511,-3.77949,3.41057,-5.9924,-4.38662,-6.14209,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,8.67569,15.34931,7.7352,20.02387,7.10682,23.14697,6.23163,27.49693,5.89768,29.15663,5.02141,33.51196,4.86009,34.3138,5.35844,31.83678,5.43989,31.43188,6.02796,28.50932,6.73043,25.01767,7.71515,20.12349,7.06047,23.37724,8.10455,18.18814,6.55185,25.90531,6.07323,28.28412,6.33308,26.99249,7.29481,22.21268,6.05077,28.39568,6.89485,24.20049,7.49718,-50.14923,5.64434,-40.11147,6.43589,-29.96807,7.76658,-19.08035,8.51981,-5.43632,8.71392,15.15949,9.90703,9.22946,-2.0E-5,0,-2.0E-5,0,-2.0E-5,0,4.88259,-2.24099]},{"time":1.3667,"vertices":[-70.41705,34.37442,-78.85695,44.50488,-83.04317,50.59951,-83.03895,55.86251,-75.4558,61.44423,-66.91991,62.35073,-56.43176,52.79782,-49.40193,42.13981,-38.02593,31.36853,-36.40095,25.16965,-30.55515,4.87659,-28.86868,-3.53624,-19.78248,-62.75611,-37.32115,-73.26339,-60.33855,-92.66755,-86.04379,-111.39024,-105.67757,-124.10738,-126.65024,-124.89159,-144.66449,-110.3586,-151.47311,-95.54165,-147.43042,-81.09411,-139.5922,-68.56383,-134.87042,-71.95443,-127.46339,-60.85379,-118.12346,-53.82679,-101.78126,-51.71567,-103.03056,-58.85463,-94.39997,-64.4724,-81.31036,-60.19676,-66.38394,-51.08508,-57.89868,-27.74495,-43.89296,3.38737,-32.66597,23.82576,-22.28335,10.90652,-14.9893,4.4808,-11.54865,12.23211,-0.40178,14.2431,-2.0E-5,0,-2.0E-5,0,-11.02068,-9.72176,-3.22299,19.71565,-14.78654,20.99318,-28.6498,21.94137,-34.75952,15.69332,-41.48957,17.95427,-55.62792,20.16899,-62.22404,24.79391,-58.0971,27.66769,-72.57096,44.13479,-70.28927,50.25853,-49.35699,38.34693,-46.55645,35.51911,-61.3503,49.97305,-53.62879,46.21342,-41.91972,27.90186,-53.5436,33.23147,-72.78381,52.92426,-64.69146,54.7669,-61.84596,41.67316,-54.95725,46.64687,-126.91089,-103.25671,-110.28194,-95.31543,-90.1948,-90.92423,-73.04885,-77.37818,-51.17789,-63.47858,-35.13591,37.52227,-23.79946,28.8777,-26.21375,17.88486,-44.01949,5.75304,-45.86902,6.67058,-40.1846,-33.0392,-49.56657,-2.09372,-25.76036,3.62906]},{"time":1.4,"vertices":[-131.45187,-51.45319,-148.6036,-31.17475,-157.28079,-18.14236,-158.10901,-3.50842,-145.73499,23.1334,-130.38083,34.89569,-111.24065,27.88556,-98.81904,19.49816,-80.39163,21.4846,-69.79592,33.42732,-69.73902,21.37726,-75.4065,3.71175,-75.45967,-33.76716,-104.78784,-42.37991,-145.88391,-72.17972,-196.42032,-103.78943,-233.52261,-122.97195,-274.29242,-115.09692,-310.17548,-74.71429,-323.07007,-38.21873,-313.74908,-6.95321,-296.78574,18.41047,-287.35056,8.77947,-271.37347,31.06201,-251.72612,43.2858,-218.07848,41.48261,-224.05377,25.88311,-207.60165,9.11362,-181.51706,11.20023,-150.47711,23.30289,-121.16852,39.72626,-84.64459,50.34229,-64.03001,58.64463,-49.08698,21.39314,-29.97859,8.96159,-23.09727,24.46422,-0.80354,28.48621,-2.0E-5,0,-2.0E-5,0,-22.04134,-19.44353,-8.44522,-28.56804,-26.14128,-40.86536,-52.5583,-47.01276,-62.81779,-70.08608,-75.57105,-70.08508,-101.96013,-77.13113,-114.84211,-70.43469,-107.6982,-58.59265,-136.96852,-26.33374,-133.73901,-7.18115,-93.29829,-20.74547,-89.84132,-13.69598,-118.09528,5.3364,-104.90922,11.42681,-77.94287,-42.83564,-100.19595,-38.87466,-139.40984,1.65357,-125.33388,17.3967,-116.82629,-23.16144,-104.92984,-2.90322,-273.27762,-65.72347,-238.62474,-54.36601,-197.13762,-52.49186,-166.77441,-32.02632,-125.5725,-12.32875,-68.02176,-1.8007,-49.42844,3.08038,-47.80422,9.75848,-88.03896,11.50607,-81.04648,23.43208,-104.64706,9.40743,-91.47524,18.19736,-51.5207,7.25812]},{"time":1.4333,"vertices":[-141.69418,-89.91953,-162.94035,-73.22871,-174.02481,-61.96138,-176.70424,-47.25473,-165.87697,-15.46182,-150.31453,0.60798,-127.95433,3.29795,-107.35299,8.17166,-84.27829,13.87565,-73.79984,33.52156,-93.42509,20.00843,-104.14333,8.25272,-119.50783,-11.15981,-152.42647,-6.79323,-196.82411,-16.03884,-248.4448,-34.77563,-292.5845,-39.65245,-334.42374,-28.66984,-362.43875,2.27655,-369.7325,31.38538,-355.0198,54.85098,-335.47263,74.67649,-317.94748,65.71158,-301.67886,80.76504,-285.0823,90.70033,-254.27272,92.3989,-258.01846,76.11541,-247.27003,62.99675,-222.94234,58.88057,-192.16331,61.03712,-161.14046,66.73997,-119.14156,67.93156,-93.84712,67.74237,-63.30359,29.2448,-46.31255,24.5336,-34.45641,40.38158,-12.44804,47.10272,-4.58382,31.15228,-2.0E-5,0,-28.90098,-28.60614,-18.64926,-40.53111,-33.24733,-53.89742,-55.80206,-67.21851,-64.24731,-93.07156,-78.21889,-96.00934,-106.27556,-109.26358,-121.19909,-105.41518,-114.80692,-91.7137,-150.78009,-65.6193,-149.56157,-45.37782,-103.61493,-49.86674,-98.50516,-37.39895,-133.44264,-26.61807,-118.11534,-13.91721,-84.11749,-68.81604,-108.97595,-69.91183,-156.42957,-35.92745,-142.50053,-15.33772,-129.09789,-57.74816,-118.51842,-34.38369,-322.1694,9.66158,-285.97684,16.62874,-246.23688,16.78676,-212.51012,19.22134,-169.27168,26.47505,-77.05382,-18.21582,-54.9422,-8.34502,-43.95517,9.95325,-102.89044,9.74546,-106.88592,19.99181,-139.58008,33.09819,-117.31013,24.49653,-53.92569,7.67862]},{"time":1.4667,"vertices":[-151.93654,-128.386,-177.27715,-115.28283,-190.76888,-105.78056,-195.29955,-91.00121,-186.01903,-54.05718,-170.2483,-33.67986,-144.66808,-21.28976,-115.88697,-3.15488,-88.16496,6.26667,-77.80376,33.6158,-117.11124,18.6396,-132.88025,12.79369,-159.7973,3.90851,-195.60782,6.3617,-244.76602,3.83169,-294.06616,-7.86333,-335.26804,-6.50256,-376.0525,8.01762,-396.54102,38.43305,-399.33905,69.30361,-381.08762,92.64108,-360.7377,113.81663,-336.11017,102.47171,-320.78897,115.28491,-308.1643,126.82421,-281.5598,134.00885,-283.22552,112.60371,-272.02405,92.61847,-247.27502,87.17693,-212.6863,87.1832,-179.44025,88.79045,-136.88281,86.75306,-107.59129,77.63562,-77.52026,37.09649,-62.64655,40.10567,-45.81557,56.299,-24.09258,65.7193,-9.16763,62.30466,-2.0E-5,0,-35.76065,-37.76878,-28.85333,-52.49422,-40.35339,-66.92953,-59.04583,-87.42433,-65.67684,-116.05714,-80.86673,-121.93368,-110.591,-141.39613,-127.55609,-140.3958,-121.91566,-124.83486,-164.59172,-104.905,-165.38417,-83.57462,-113.93161,-78.98813,-107.16903,-61.10201,-148.79005,-58.57266,-131.32152,-39.26133,-90.29212,-94.79652,-117.75597,-100.9491,-173.44936,-73.50861,-159.66725,-48.07225,-141.36952,-92.33501,-132.10704,-65.86427,-355.24713,47.61027,-319.47357,53.08123,-283.15186,52.52898,-249.21744,44.0771,-207.43579,47.6265,-86.08591,-34.631,-60.45599,-19.77045,-40.10611,10.14803,-117.74198,7.98483,-132.72545,16.55154,-171.94208,51.63213,-143.14511,30.79572,-56.33069,8.09913]},{"time":1.5,"vertices":[-151.93654,-128.386,-178.15945,-120.69106,-192.92516,-113.44209,-190.94879,-101.02086,-192.72208,-73.83811,-177.91005,-58.05946,-156.84607,-41.63752,-124.71217,-15.88078,-88.16496,6.26667,-77.80376,33.6158,-117.11124,18.6396,-132.88025,12.79369,-166.30356,17.1678,-202.37338,33.99169,-248.4867,39.35126,-298.22083,35.41038,-342.2739,38.15667,-376.2425,57.15323,-394.76685,89.66321,-396.4634,117.82472,-366.11874,131.6904,-350.1521,145.58844,-337.18158,136.10063,-322.84595,147.00995,-307.85916,152.25815,-286.51025,148.05208,-289.30066,126.24805,-280.40997,110.64816,-250.5748,99.70715,-213.0011,95.76285,-181.55362,94.97186,-136.88281,86.75306,-107.59129,77.63562,-77.52026,37.09649,-62.64655,40.10567,-45.81557,56.299,-24.09258,65.7193,-9.16763,62.30466,-2.0E-5,0,-35.76065,-37.76878,-28.85333,-52.49422,-40.35339,-66.92953,-59.04583,-87.42433,-65.67684,-116.05714,-80.86673,-121.93368,-110.591,-141.39613,-127.55609,-140.3958,-121.91566,-124.83486,-165.76842,-113.96886,-167.63979,-101.10149,-115.25388,-90.41172,-109.6324,-68.44429,-153.7794,-79.7434,-136.24835,-53.94591,-92.79071,-99.00262,-119.34332,-105.12422,-176.21503,-88.60848,-164.40157,-68.65309,-142.85818,-104.04455,-135.7806,-84.29303,-355.13516,87.35067,-323.20538,85.13422,-291.3755,76.85062,-249.22365,71.40271,-207.7596,63.4704,-90.05422,-43.44156,-60.45599,-19.77045,-40.10611,10.14803,-117.74198,7.98483,-132.72545,16.55154,-172.88249,59.08895,-143.14511,30.79572,-56.33069,8.09913]},{"time":1.5667,"vertices":[-141.01382,-98.47987,-163.29068,-91.81051,-175.38876,-85.46864,-172.25879,-78.55413,-175.35114,-57.08593,-162.90741,-46.73228,-145.45776,-37.89273,-118.06281,-20.81581,-88.16496,6.26667,-77.80376,33.6158,-117.11124,18.6396,-132.88025,12.79369,-166.30356,17.1678,-202.37338,33.99169,-248.4867,39.35126,-298.22083,35.41038,-342.2739,38.15667,-376.2425,57.15323,-394.76685,89.66321,-396.4634,117.82472,-366.11874,131.6904,-350.1521,145.58844,-337.18158,136.10063,-322.84595,147.00995,-307.85916,152.25815,-286.51025,148.05208,-289.30066,126.24805,-280.40997,110.64816,-250.5748,99.70715,-213.0011,95.76285,-181.55362,94.97186,-136.88281,86.75306,-107.59129,77.63562,-77.52026,37.09649,-62.64655,40.10567,-45.81557,56.299,-24.09258,65.7193,-9.16763,62.30466,-2.0E-5,0,-35.76065,-37.76878,-28.85333,-52.49422,-40.33588,-57.6875,-59.49745,-72.73655,-68.22011,-94.07352,-81.45741,-97.65981,-108.25979,-110.71755,-122.1894,-108.98652,-115.76294,-97.5073,-153.2168,-87.96709,-155.53464,-79.2407,-109.34637,-73.36073,-104.9814,-56.50557,-144.15125,-65.16235,-127.87166,-46.01543,-90.04642,-79.55262,-112.61389,-82.94587,-161.67697,-69.71903,-152.07272,-56.18338,-133.82422,-82.11716,-127.63764,-68.04272,-355.13516,87.35067,-323.20538,85.13422,-291.3755,76.85062,-249.22365,71.40271,-207.7596,63.4704,-86.68856,-37.81656,-60.45599,-19.77045,-40.10611,10.14803,-117.74198,7.98483,-132.72545,16.55154,-172.88249,59.08895,-143.14511,30.79572,-56.33069,8.09913]},{"time":1.6,"vertices":[-126.68488,-112.62257,-153.16333,-110.64824,-163.77899,-100.76437,-164.26962,-88.73792,-168.4284,-60.11137,-164.98157,-48.24212,-151.00478,-40.58978,-119.63441,-19.75203,-90.57693,4.81735,-77.80376,33.6158,-117.11124,18.6396,-132.88025,12.79369,-166.30356,17.1678,-202.37338,33.99169,-248.4867,39.35126,-298.22083,35.41038,-342.2739,38.15667,-376.2425,57.15323,-394.76685,89.66321,-396.4634,117.82472,-366.11874,131.6904,-350.1521,145.58844,-337.18158,136.10063,-322.84595,147.00995,-307.85916,152.25815,-286.51025,148.05208,-289.30066,126.24805,-280.40997,110.64816,-250.5748,99.70715,-213.0011,95.76285,-181.55362,94.97186,-136.88281,86.75306,-107.59129,77.63562,-77.52026,37.09649,-62.64655,40.10567,-45.81557,56.299,-24.09258,65.7193,-9.16763,62.30466,-2.0E-5,0,-35.76065,-37.76878,-28.85333,-52.49422,-43.02149,-59.61117,-60.27876,-66.33749,-66.19814,-95.96494,-75.72632,-99.5706,-99.12891,-126.89813,-111.4478,-118.78793,-108.13398,-108.09357,-144.74487,-100.57414,-148.9693,-85.6284,-109.34637,-73.36073,-104.97292,-53.80267,-144.15125,-65.16235,-127.87166,-46.01543,-89.42258,-80.5159,-105.08825,-88.26041,-154.57571,-76.8546,-155.04297,-57.3479,-127.3371,-86.70671,-127.63764,-68.04272,-355.13516,87.35067,-323.20538,85.13422,-291.3755,76.85062,-249.22365,71.40271,-207.7596,63.4704,-86.68856,-37.81656,-60.45599,-19.77045,-40.10611,10.14803,-117.74198,7.98483,-132.72545,16.55154,-172.88249,59.08895,-143.14511,30.79572,-56.33069,8.09913]},{"time":1.6333,"vertices":[-108.63416,-124.91017,-133.87291,-124.251,-142.6294,-115.84753,-143.20923,-102.44234,-148.82416,-70.71955,-137.87033,-52.09589,-131.98907,-38.28564,-115.27725,-15.78029,-90.57693,4.81735,-77.80376,33.6158,-117.11124,18.6396,-132.88025,12.79369,-166.30356,17.1678,-202.37338,33.99169,-248.4867,39.35126,-298.22083,35.41038,-342.2739,38.15667,-376.2425,57.15323,-394.76685,89.66321,-396.4634,117.82472,-366.11874,131.6904,-350.1521,145.58844,-337.18158,136.10063,-322.84595,147.00995,-307.85916,152.25815,-286.51025,148.05208,-289.30066,126.24805,-280.40997,110.64816,-250.5748,99.70715,-213.0011,95.76285,-181.55362,94.97186,-136.88281,86.75306,-107.59129,77.63562,-77.52026,37.09649,-62.64655,40.10567,-45.81557,56.299,-24.09258,65.7193,-9.16763,62.30466,-2.0E-5,0,-35.76065,-37.76878,-28.85333,-52.49422,-43.02149,-59.61117,-49.74921,-69.9977,-55.65605,-99.59956,-62.96867,-105.93137,-85.68259,-135.36412,-94.51278,-130.98228,-92.37325,-118.09144,-126.38745,-112.6104,-130.97462,-96.28339,-94.80884,-79.84474,-92.80672,-56.23335,-127.23772,-71.82628,-112.56506,-46.76895,-75.99547,-86.58072,-89.98784,-95.99784,-136.7193,-86.29273,-136.30603,-63.55061,-110.68084,-96.0786,-112.13541,-75.23594,-355.13516,87.35067,-323.20538,85.13422,-291.3755,76.85062,-249.22365,71.40271,-207.7596,63.4704,-83.78013,-35.61229,-60.45599,-19.77045,-40.10611,10.14803,-117.74198,7.98483,-132.72545,16.55154,-172.88249,59.08895,-143.14511,30.79572,-56.33069,8.09913]}]},"splat-fg":{"alien/splat03":[{"time":1.4667,"offset":2,"vertices":[10.0782,-14.45856,5.80107,-64.63068,-4.33017,-85.72516,-0.56895,-26.34158,20.55198,46.75519,1.0E-5,-6.0E-5,5.4104,-18.72467]},{"time":1.6667,"vertices":[-30.33957,-86.29268,19.83765,-119.15993,3.91198,-199.36053,-24.9324,-176.0454,-23.386,-111.6241,19.24028,18.19496,-75.0881,-2.30758,13.37083,35.55253,-3.13088,47.11062,46.50816,-10.46628,29.48812,-24.96087]},{"time":1.7,"vertices":[47.91341,-94.33224,64.14584,-71.34769,45.37762,-89.88364,-20.35247,-63.58272,-19.63882,-19.61007,20.59519,91.7681,-76.96143,-48.30743,-7.3912,-76.66309,-7.51576,-60.56274,37.98726,-119.19406,-35.91211,-79.69955]}]}}},"drawOrder":[{"time":1.4333,"offsets":[{"slot":"burst-bg","offset":6},{"slot":"splat-bg","offset":6}]},{"time":1.6333,"offsets":[{"slot":"burst-bg","offset":7},{"slot":"backarmor","offset":-9},{"slot":"splat-fg","offset":8}]},{"time":1.6667,"offsets":[{"slot":"metaljaw-bg","offset":21},{"slot":"burst-bg","offset":6},{"slot":"backarmor","offset":-9},{"slot":"splat-fg","offset":6},{"slot":"metaljaw","offset":5}]},{"time":1.7667,"offsets":[{"slot":"metaljaw-bg","offset":10},{"slot":"burst-bg","offset":7},{"slot":"backarmor","offset":-8},{"slot":"splat-fg","offset":-14},{"slot":"metaljaw","offset":-6}]}],"events":[{"time":1.2667,"name":"squish"}]}}},"armorgirl":{"skeleton":{"hash":"++k+ysdjz0U//Vqq4TjnjdH6BQI","spine":"3.6.39","width":1732.04,"height":2099.97},"bones":[{"name":"root"},{"name":"center","parent":"root","x":69.86,"y":1114.48},{"name":"pelvis","parent":"center","x":58.56,"y":72.24},{"name":"Layer 103","parent":"pelvis","length":155.59,"rotation":113.96,"x":3,"y":43.88},{"name":"bone","parent":"Layer 103","length":190.38,"rotation":-21.49,"x":178.7,"y":-7.3},{"name":"Layer 70","parent":"bone","length":229.41,"rotation":-103.72,"x":199.56,"y":-127.96},{"name":"Layer 66","parent":"Layer 70","length":419.75,"rotation":-10.7,"x":32.09,"y":124.48},{"name":"Layer 69","parent":"Layer 70","length":268.66,"rotation":-105.41,"x":255.41,"y":-18.25},{"name":"Layer 68","parent":"Layer 69","length":112.08,"rotation":6.74,"x":295.92,"y":-2.88},{"name":"bone2","parent":"bone","length":61.76,"rotation":11.14,"x":211.2,"y":-4.62},{"name":"Layer 80","parent":"bone2","length":47.79,"rotation":-0.9,"x":79.44,"y":-2},{"name":"Layer 74","parent":"Layer 80","length":57.98,"rotation":-169.73,"x":150.78,"y":-112.15},{"name":"Layer 75","parent":"Layer 80","length":65.59,"rotation":-45.92,"x":178.16,"y":-93.68},{"name":"Layer 76","parent":"Layer 80","length":58.88,"rotation":56.52,"x":177.24,"y":-81.08},{"name":"Layer 77","parent":"Layer 80","length":63,"rotation":90,"x":179,"y":-67.71},{"name":"Layer 78","parent":"Layer 80","length":61.69,"rotation":146.63,"x":125.1,"y":44.7},{"name":"Layer 79","parent":"Layer 80","length":92.84,"rotation":175.5,"x":158.1,"y":-100.03},{"name":"Layer 81","parent":"Layer 80","x":73.44,"y":26.61},{"name":"Layer 82","parent":"Layer 80","x":93.64,"y":13.08},{"name":"Layer 85","parent":"Layer 80","x":69.69,"y":-28.87},{"name":"Layer 86","parent":"Layer 80","length":40.43,"rotation":-101.14,"x":97.02,"y":-11.99},{"name":"Layer 87","parent":"Layer 80","x":98.29,"y":40.61},{"name":"Layer 88","parent":"Layer 80","length":28.8,"rotation":39.31,"x":110.67,"y":28.76},{"name":"Layer 89","parent":"Layer 80","x":26.82,"y":40.04},{"name":"Layer 91","parent":"bone","length":233.65,"rotation":173.71,"x":187.32,"y":110.63},{"name":"Layer 90","parent":"Layer 91","length":402.4,"rotation":-10.7,"x":-88.18,"y":-21.48},{"name":"Layer 95","parent":"Layer 91","length":178.02,"rotation":-9.46,"x":272.72,"y":1.71},{"name":"Layer 92","parent":"Layer 95","length":412.64,"rotation":-28.86,"x":279.68,"y":0.14,"scaleX":1.053,"scaleY":1.053},{"name":"Layer 93","parent":"pelvis","length":170.66,"rotation":-95.4,"x":121.17,"y":-149.19},{"name":"Layer 96","parent":"bone","length":70.86,"rotation":153.98,"x":115.58,"y":85.61},{"name":"Layer 100","parent":"bone","length":70.75,"rotation":175.5,"x":108.02,"y":21.03},{"name":"Layer 102","parent":"pelvis","x":-43.71,"y":31.16},{"name":"Layer 108","parent":"pelvis","length":389.93,"rotation":-130.38,"x":83.88,"y":-53.92},{"name":"Layer 104","parent":"Layer 108","length":618.07,"rotation":18.02,"x":420.03,"y":7.01},{"name":"Layer 106","parent":"Layer 104","length":179.68,"rotation":-6.29,"x":681.14,"y":9.41},{"name":"Layer 111","parent":"pelvis","length":419,"rotation":-149.77,"x":-62.91,"y":-14.57},{"name":"Layer 110","parent":"Layer 111","length":310.77,"rotation":153.8,"x":390.74,"y":21.86},{"name":"Layer 112","parent":"pelvis","length":106.1,"rotation":-100.27,"x":-47.43,"y":3.65},{"name":"Layer 116","parent":"Layer 66","rotation":10.7,"x":43.48,"y":-92.63},{"name":"Layer 117","parent":"Layer 66","rotation":10.7,"x":178.61,"y":-85.3},{"name":"Layer 118","parent":"Layer 104","x":444.57,"y":54.99},{"name":"Layer 119","parent":"Layer 104","x":599.79,"y":38.31},{"name":"Layer 120","parent":"Layer 104","x":279.41,"y":77.92},{"name":"Layer 121","parent":"Layer 66","rotation":10.7,"x":330.76,"y":-81.93},{"name":"Layer 122","parent":"Layer 66","rotation":30.51,"x":476.57,"y":25.35},{"name":"Layer 123","parent":"Layer 90","x":136.06,"y":-56.42},{"name":"Layer 124","parent":"Layer 90","x":284.26,"y":-55.01},{"name":"Layer 125","parent":"Layer 90","rotation":5.19,"x":418.42,"y":-56.5,"scaleX":0.856,"scaleY":0.856},{"name":"bone3","parent":"Layer 77","length":42.12,"rotation":28.17,"x":66.13,"y":0.94},{"name":"bone4","parent":"bone3","length":40.08,"rotation":20.06,"x":44.8,"y":-1.1},{"name":"bone5","parent":"Layer 80","length":44.53,"rotation":136.62,"x":172.32,"y":-73.3},{"name":"bone6","parent":"bone5","length":42.67,"rotation":-2.25,"x":50.39,"y":-0.4},{"name":"bone7","parent":"Layer 76","length":51.25,"rotation":43.61,"x":63.77,"y":2.86},{"name":"bone8","parent":"bone7","length":58.73,"rotation":16.24,"x":54.71,"y":3.01},{"name":"bone9","parent":"Layer 75","length":68.88,"rotation":50.15,"x":70.12,"y":2.12},{"name":"bone10","parent":"bone9","length":67.83,"rotation":54.68,"x":71.12,"y":3.03},{"name":"bone11","parent":"bone10","length":70.4,"rotation":26.75,"x":74.78,"y":2.12},{"name":"bone12","parent":"Layer 78","length":54.28,"rotation":12.43,"x":65.83,"y":-0.4},{"name":"bone13","parent":"bone12","length":55.22,"rotation":26.02,"x":60.32,"y":0.91},{"name":"bone14","parent":"Layer 74","length":75.55,"rotation":-27.65,"x":69.18,"y":-3.69},{"name":"bone15","parent":"bone14","length":68.67,"rotation":12.53,"x":79.94,"y":1.19},{"name":"bone16","parent":"Layer 79","length":95.63,"rotation":-18.71,"x":101.76,"y":-1.52},{"name":"bone17","parent":"bone16","length":79.81,"rotation":8.51,"x":107.21,"y":-0.01},{"name":"bone18","parent":"bone17","length":95.86,"rotation":12.86,"x":92.73,"y":3.63},{"name":"bone19","parent":"bone18","length":61.86,"rotation":23.2,"x":101.53,"y":-0.01},{"name":"bone20","parent":"Layer 93","length":132.1,"rotation":35.62,"x":193.56,"y":14.55},{"name":"bone21","parent":"bone20","length":134.59,"rotation":3.63,"x":155.44,"y":-0.71},{"name":"bone22","parent":"Layer 112","length":79.74,"rotation":-15.83,"x":118.47,"y":-0.76},{"name":"bone23","parent":"bone15","length":79.65,"rotation":12,"x":79.87,"y":3.54},{"name":"bone24","parent":"bone23","length":89.61,"rotation":5.84,"x":93.5,"y":1.84},{"name":"bone25","parent":"bone24","length":79.88,"rotation":-14.14,"x":98.42,"y":1.75},{"name":"bone26","parent":"bone25","length":97,"rotation":-14.14,"x":84.54,"y":-4.49},{"name":"bone27","parent":"Layer 100","length":62.89,"rotation":-2.73,"x":76.64,"y":-0.58},{"name":"bone28","parent":"Layer 96","length":59.62,"rotation":-15.41,"x":76.36,"y":-1.9},{"name":"bone29","parent":"bone16","x":52.45,"y":-4.91},{"name":"bone30","parent":"bone17","x":42.28,"y":-9.6},{"name":"bone31","parent":"bone18","x":10.65,"y":6.24},{"name":"bone32","parent":"bone19","x":-12.84,"y":13.36},{"name":"bone33","parent":"bone24","x":43.05,"y":7.14},{"name":"bone34","parent":"bone25","x":21.78,"y":26.36},{"name":"bone35","parent":"bone25","x":27.08,"y":-31.99},{"name":"bone36","parent":"bone26","x":21.58,"y":30.12},{"name":"bone37","parent":"bone26","x":20.48,"y":-36.24},{"name":"bone38","parent":"Layer 78","x":49.61,"y":-6.24},{"name":"bone39","parent":"bone12","x":38.6,"y":-4.41},{"name":"bone40","parent":"bone13","x":36.76,"y":-11.93},{"name":"bone41","parent":"bone13","x":29.19,"y":32.28}],"slots":[{"name":"Layer 93","bone":"Layer 93","attachment":"armorgirl/Layer 93"},{"name":"Layer 73","bone":"Layer 74","attachment":"armorgirl/Layer 73"},{"name":"Layer 90","bone":"Layer 90","attachment":"armorgirl/Layer 90"},{"name":"Layer 92","bone":"Layer 92","attachment":"armorgirl/Layer 92"},{"name":"Layer 78","bone":"Layer 78","attachment":"armorgirl/Layer 78"},{"name":"Layer 91","bone":"Layer 91","attachment":"armorgirl/Layer 91"},{"name":"Layer 74","bone":"Layer 74","attachment":"armorgirl/Layer 74"},{"name":"Layer 95","bone":"Layer 95","attachment":"armorgirl/Layer 95"},{"name":"Layer 94","bone":"Layer 91","attachment":"armorgirl/Layer 94"},{"name":"Layer 101","bone":"Layer 102","attachment":"armorgirl/Layer 101"},{"name":"Layer 110","bone":"Layer 110","attachment":"armorgirl/Layer 110"},{"name":"Layer 111","bone":"Layer 111","attachment":"armorgirl/Layer 111"},{"name":"Layer 112","bone":"Layer 112","attachment":"armorgirl/Layer 112"},{"name":"Layer 109","bone":"Layer 106","attachment":"armorgirl/Layer 109"},{"name":"Layer 104","bone":"Layer 104","attachment":"armorgirl/Layer 104"},{"name":"Layer 108","bone":"Layer 108","attachment":"armorgirl/Layer 108"},{"name":"Layer 107","bone":"Layer 104","attachment":"armorgirl/Layer 107"},{"name":"Layer 106","bone":"Layer 106","attachment":"armorgirl/Layer 106"},{"name":"Layer 103","bone":"Layer 103","attachment":"armorgirl/Layer 103"},{"name":"Layer 102","bone":"Layer 102","attachment":"armorgirl/Layer 102"},{"name":"Layer 96","bone":"Layer 96","attachment":"armorgirl/Layer 96"},{"name":"Layer 100","bone":"Layer 100","attachment":"armorgirl/Layer 100"},{"name":"Layer 97","bone":"Layer 96","attachment":"armorgirl/Layer 97"},{"name":"Layer 98","bone":"bone","attachment":"armorgirl/Layer 98"},{"name":"Layer 99","bone":"Layer 100","attachment":"armorgirl/Layer 99"},{"name":"Layer 80","bone":"Layer 80","attachment":"armorgirl/Layer 80"},{"name":"Layer 89","bone":"Layer 89","attachment":"armorgirl/Layer 89"},{"name":"Layer 87","bone":"Layer 87"},{"name":"Layer 88","bone":"Layer 88","attachment":"armorgirl/Layer 88"},{"name":"Layer 85","bone":"Layer 85","attachment":"armorgirl/Layer 85"},{"name":"Layer 86","bone":"Layer 86","attachment":"armorgirl/Layer 86"},{"name":"Layer 84","bone":"Layer 82","attachment":"armorgirl/Layer 84"},{"name":"Layer 82","bone":"Layer 82","attachment":"armorgirl/Layer 82"},{"name":"Layer 81","bone":"Layer 81","attachment":"armorgirl/Layer 81"},{"name":"Layer 77","bone":"Layer 77","attachment":"armorgirl/Layer 77"},{"name":"Layer 76","bone":"Layer 76","attachment":"armorgirl/Layer 76"},{"name":"Layer 75","bone":"Layer 75","attachment":"armorgirl/Layer 75"},{"name":"Layer 72","bone":"Layer 68","attachment":"armorgirl/Layer 72"},{"name":"Layer 70","bone":"Layer 70","attachment":"armorgirl/Layer 70"},{"name":"Layer 79","bone":"Layer 79","attachment":"armorgirl/Layer 79"},{"name":"Layer 69","bone":"Layer 69","attachment":"armorgirl/Layer 69"},{"name":"Layer 68","bone":"Layer 68","attachment":"armorgirl/Layer 68"},{"name":"Layer 66","bone":"Layer 66","attachment":"armorgirl/Layer 66"},{"name":"Layer 118","bone":"Layer 118","attachment":"armorgirl/Layer 118","blend":"additive"},{"name":"Layer 119","bone":"Layer 119","attachment":"armorgirl/Layer 118","blend":"additive"},{"name":"Layer 120","bone":"Layer 120","attachment":"armorgirl/Layer 118","blend":"additive"},{"name":"Layer 117","bone":"Layer 123","attachment":"armorgirl/Layer 117","blend":"additive"},{"name":"Layer 124","bone":"Layer 124","attachment":"armorgirl/Layer 117","blend":"additive"},{"name":"Layer 125","bone":"Layer 125","attachment":"armorgirl/Layer 117","blend":"additive"},{"name":"Layer 116","bone":"Layer 116","attachment":"armorgirl/Layer 116","blend":"additive"},{"name":"Layer 121","bone":"Layer 117","attachment":"armorgirl/Layer 116","blend":"additive"},{"name":"Layer 122","bone":"Layer 121","attachment":"armorgirl/Layer 116","blend":"additive"},{"name":"Layer 123","bone":"Layer 122","attachment":"armorgirl/Layer 116","blend":"additive"},{"name":"Layer 115","bone":"bone","attachment":"armorgirl/Layer 115","blend":"additive"},{"name":"Layer 114","bone":"Layer 96","attachment":"armorgirl/Layer 114","blend":"additive"},{"name":"Layer 113","bone":"Layer 100","attachment":"armorgirl/Layer 113","blend":"additive"},{"name":"Layer 851","bone":"root"},{"name":"Layer 871","bone":"root"}],"skins":{"default":{"Layer 100":{"armorgirl/Layer 100":{"type":"mesh","uvs":[0.80325,0.11836,1,0.4541,1,0.62829,0.93434,0.83529,0.76065,1,0.47224,1,0.1609,0.94384,0,0.78228,0,0.5778,0.09208,0.39604,0.2035,0.18399,0.22645,0,0.60334,0,0.36737,0.41624,0.26905,0.64848,0.40998,0.7848,0.70493,0.71412,0.76065,0.52731,0.60989,0.34303],"triangles":[1,17,0,18,12,0,17,1,2,8,9,14,16,17,2,15,14,13,7,8,14,16,15,13,3,16,2,6,7,14,6,14,15,5,15,16,6,15,5,4,16,3,5,16,4,17,18,0,18,10,12,17,13,18,12,10,11,18,13,10,9,10,13,14,9,13,16,13,17],"vertices":[2,72,-100.8,49.15,0.16208,4,125.48,-33.82,0.83792,3,30,51.58,89.58,0.13899,72,-29.31,88.86,0.35654,4,49.56,-64.22,0.50448,3,30,90.23,90.95,0.14831,72,9.23,92.07,0.61132,4,10.93,-62.55,0.24036,2,30,136.55,81.36,0.11262,72,55.95,84.69,0.88738,1,72,94.86,58.13,1,1,72,98.95,8.98,1,1,72,90.94,-45.11,1,2,30,130.46,-78.73,0.11701,72,57.47,-75.51,0.88299,2,30,85.09,-80.34,0.31574,72,12.24,-79.27,0.68426,2,30,44.21,-66.04,0.63711,72,-29.28,-66.93,0.36289,1,30,-3.51,-48.66,1,1,30,-44.47,-46.19,1,1,4,153.21,-0.8,1,2,30,47.02,-18.83,0.87805,72,-28.72,-19.64,0.12195,2,30,99.14,-33.81,0.12024,72,24.06,-32.12,0.87976,1,72,52.22,-5.59,1,2,30,111.06,41.2,0.33592,72,32.4,43.37,0.66408,2,30,69.28,49.25,0.66731,72,-9.72,49.42,0.33269,2,30,29.31,22.04,0.83333,72,-48.35,20.34,0.16667],"hull":13}},"Layer 101":{"armorgirl/Layer 101":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[193.81,-6.91,-102.19,-6.91,-102.19,124.09,193.81,124.09],"hull":4}},"Layer 102":{"armorgirl/Layer 102":{"type":"mesh","uvs":[1,0.5169,0.88927,0.76154,0.6342,0.93844,0.51101,0.97494,0.42644,1,0.28861,1,0.15902,0.90457,0.10189,0.8329,0,0.70509,0,0.58088,0.08085,0.26473,0.11945,0.34141,0.15285,0.40775,0.39764,0.43786,0.4758,0.48303,0.66094,0.38141,0.80905,0.13676,0.80699,0,1,0],"triangles":[16,17,18,16,18,0,15,16,0,9,10,11,7,9,11,7,8,9,1,15,0,11,12,7,6,7,12,6,13,4,12,13,6,1,2,14,1,14,15,13,14,4,2,3,14,4,5,6,14,3,4],"vertices":[216.81,21.01,179.94,-23.51,95,-55.71,53.98,-62.35,25.82,-66.91,-20.08,-66.91,-63.23,-49.54,-82.26,-36.5,-116.19,-13.24,-116.19,9.37,-89.26,66.91,-76.41,52.95,-65.29,40.88,16.23,35.4,42.26,27.18,103.91,45.67,153.23,90.2,152.54,115.09,216.81,115.09],"hull":19}},"Layer 103":{"armorgirl/Layer 103":{"type":"mesh","uvs":[0.50054,0.09398,0.76689,0.10018,0.84781,0.20983,0.84444,0.37223,0.74161,0.54394,0.83264,0.69496,1,0.80978,0.97471,0.91011,0.75678,0.98345,0.36399,1,0.0892,0.9308,0.16001,0.81909,0.05717,0.70013,0,0.50463,0,0.29982,0,0.16535,0.08415,0.1157,0.16169,0.11777,0.13135,0.05881,0.26453,0,0.43816,0,0.64214,0.78288,0.49548,0.53463,0.3977,0.35878,0.43985,0.20466,0.31004,0.05984,0.13472,0.20155,0.62866,0.23259,0.05549,0.32982,0.25104,0.73944,0.5186,0.69807,0.34713,0.87081,0.67417,0.39602],"triangles":[25,19,20,18,19,25,17,18,25,0,25,20,24,25,0,26,17,25,24,26,25,27,0,1,27,1,2,24,0,27,2,32,27,26,16,17,15,16,26,14,15,26,28,14,26,23,26,24,28,26,23,3,32,2,23,24,27,32,23,27,13,14,28,22,23,32,13,28,23,22,13,23,4,32,3,22,32,4,22,29,13,30,22,4,21,30,4,29,12,13,30,29,22,5,21,4,11,12,29,31,29,30,11,29,31,31,30,21,7,5,6,8,21,5,8,5,7,9,31,21,9,21,8,10,11,31,9,10,31],"vertices":[1,9,30.6,-58.45,1,2,4,245.72,-140.01,0.1153,9,7.71,-139.51,0.8847,2,4,188.21,-163.14,0.24869,9,-53.18,-151.09,0.75131,2,4,104.7,-158.5,0.58707,9,-134.23,-130.4,0.41293,2,3,150.43,-127.55,0.40316,4,17.74,-122.25,0.59684,1,3,67.67,-122.28,1,1,3,-7.83,-146.63,1,1,3,-51.82,-118.36,1,1,3,-58.4,-40.09,1,1,3,-15.82,76.81,1,1,3,51.98,141.72,1,1,3,95.49,97.92,1,2,3,164.67,102.76,0.71777,4,-53.38,97.27,0.28223,1,4,47.98,111.01,1,1,4,153.36,106.51,1,2,4,222.55,103.54,0.7827,9,32.04,103.93,0.2173,2,4,246.96,75.89,0.59617,9,50.64,72.08,0.40383,2,4,244.85,51.45,0.34922,9,43.85,48.51,0.65078,1,9,75.62,50.7,1,1,9,95.17,2.67,1,1,9,82.27,-50.66,1,1,3,50.71,-48.89,1,2,3,186.37,-58.41,0.19135,4,25.86,-44.75,0.80865,1,4,117.65,-17.76,1,2,4,196.39,-34.46,0.29234,9,-20.3,-26.41,0.70766,1,9,61.83,-4.07,1,2,4,202.1,61.81,0.85301,9,3.91,66.93,0.14699,2,4,179.47,-93.45,0.35844,9,-48.3,-81.02,0.64156,1,4,137.18,89.65,1,1,3,121.31,54.99,1,1,3,106.47,-30.93,1,1,3,47.15,54.69,1,2,4,94.76,-104.22,0.76533,9,-133.49,-75.23,0.23467],"hull":21}},"Layer 104":{"armorgirl/Layer 104":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[124.69,131.12,190.5,-28.88,-24.99,-117.5,-90.79,42.49],"hull":4}},"Layer 106":{"armorgirl/Layer 106":{"type":"mesh","uvs":[0.93109,0.06754,1,0.30434,1,0.49531,0.7537,0.79577,0.21087,1,0.09988,0.92869,0,0.86452,0.3315,0.50804,0.52308,0.19994,0.57985,0,0.79982,0,0.81401,0.11846,0.86368,0.37563,0.56566,0.70156],"triangles":[11,10,0,9,10,11,8,9,11,11,0,1,12,11,1,8,11,12,12,1,2,13,8,12,7,8,13,3,13,12,3,12,2,5,6,7,5,7,13,4,5,13,4,13,3],"vertices":[-38.78,-24.11,15.35,22.02,64.63,48.93,167.06,45.66,274.66,-26.08,267.49,-56.68,261.03,-84.22,135.52,-73.07,36.65,-81.01,-20.68,-98.67,-42.93,-57.94,-13.8,-38.61,47.53,6.83,161.77,-2.43],"hull":11}},"Layer 107":{"armorgirl/Layer 107":{"type":"mesh","uvs":[0.91234,0.0904,0.8968,0.1563,1,0.33536,0.24665,1,0,1,0,0.85393,0.34508,0.08324,0.41502,0.08467,0.3943,0,0.80614,0,0.78968,0.14037,0.13268,0.90693],"triangles":[7,8,9,10,7,9,10,9,0,1,10,0,11,5,6,11,6,7,11,7,10,4,5,11,3,11,10,2,3,10,2,10,1,4,11,3],"vertices":[4.92,56.58,50.32,68.68,152.05,154.15,698.67,60.48,735.36,-28.71,639.85,-68,84.61,-150.47,75.14,-124.8,22.86,-155.06,-38.39,-6.13,55.84,25.66,654.77,-5.76],"hull":10}},"Layer 108":{"armorgirl/Layer 108":{"type":"mesh","uvs":[0.95902,0.15271,0.95902,0.4183,0.78472,0.59487,0.53767,0.80407,0.29669,1,0,1,0,0.78033,0.17241,0.51474,0.39369,0.21354,0.52706,0.04588,0.8408,0,0.17999,0.83375,0.44522,0.52365,0.75895,0.18832,0.83444,0.33491,0.69606,0.49956],"triangles":[13,9,10,13,10,0,14,13,0,14,0,1,13,8,9,15,13,14,13,12,8,12,7,8,13,15,12,2,15,14,2,14,1,3,12,15,3,15,2,11,7,12,11,12,3,6,7,11,5,6,11,4,11,3,5,11,4],"vertices":[-142.08,72.4,-36.26,162.38,91.9,154.22,257.19,128.73,415.18,101.12,513.58,-14.61,426.06,-89.03,263.06,-111.76,69.66,-127.49,-41.38,-132.27,-163.71,-25.44,387.65,-0.73,176.12,-2.33,-61.54,6.43,-28.16,85.54,83.33,87.35],"hull":11}},"Layer 109":{"armorgirl/Layer 109":{"type":"mesh","uvs":[0.64441,0.82366,0.3858,0.90272,0.05444,0.82366,0,0,0.53552,0,0.82815,0,0.71246,0.47262,0.33135,0.4684],"triangles":[7,3,4,6,4,5,7,4,6,2,3,7,0,7,6,1,2,7,0,6,5,0,1,7],"vertices":[91.02,92.85,116.94,74.59,122.13,35.89,-2.95,-39.24,-31.19,12.46,-46.62,40.71,32.9,69.64,52.34,32.48],"hull":6}},"Layer 110":{"armorgirl/Layer 110":{"type":"mesh","uvs":[1,0.36495,0.85815,0.7017,0.50179,1,0,1,0,0.55529,0.1321,0.24293,0.44184,0.077,0.76822,0,1,0,0.23202,0.75051,0.63334,0.48208],"triangles":[10,7,8,10,6,7,0,10,8,5,6,10,9,4,5,1,10,0,10,9,5,3,4,9,2,9,10,2,10,1,3,9,2],"vertices":[399.72,-11.57,330.04,-60.35,161.07,-96.05,-72.18,-79.7,-67.24,-9.17,-2.36,36.07,143.47,52.29,296.04,53.87,403.78,46.32,38.44,-47.69,227.98,-18.19],"hull":9}},"Layer 111":{"armorgirl/Layer 111":{"type":"mesh","uvs":[1,0.4933,0.83919,0.69964,0.502,0.79159,0.38907,0.87906,0.22936,1,0.06157,1,0,0.81626,0.04867,0.59871,0.28582,0.32734,0.69076,0,1,0,0.27292,0.60768,0.49394,0.39911,0.18096,0.76244,0.79798,0.44155],"triangles":[12,8,9,12,9,10,14,12,10,14,10,0,11,7,8,11,8,12,1,14,0,13,7,11,2,12,14,2,14,1,11,12,2,3,13,11,6,7,13,2,3,11,5,6,13,4,5,13,3,4,13],"vertices":[13.17,115.93,115.94,138.68,272.1,84.53,334.27,83.34,421.71,80.82,491.44,40.2,485.03,-29.64,426.92,-82.9,281.09,-106.61,55.78,-106.43,-72.75,-31.55,335.28,-25.92,207.09,-34.76,400.45,-1.92,88.12,51.54],"hull":11}},"Layer 112":{"armorgirl/Layer 112":{"type":"mesh","uvs":[1,0.4542,0.9049,0.70935,0.6443,1,0,0.92934,0.29486,0.56411,0.20602,0.28932,0,0.10875,0,0,1,0],"triangles":[3,4,2,2,4,1,1,4,0,4,5,0,5,8,0,8,5,7,5,6,7],"vertices":[2,37,45.78,75.89,0.66667,67,-90.84,53.93,0.33333,2,37,113.45,71.63,0.33333,67,-24.56,68.28,0.66667,1,67,62.38,61.24,1,1,67,94.46,-45.72,1,2,37,95.18,-37.7,0.33333,67,-12.34,-41.88,0.66667,2,37,28.13,-65.29,0.66667,67,-69.33,-86.71,0.33333,1,37,-11.43,-108.26,1,1,37,-39.04,-113.26,1,1,37,-69.53,54.99,1],"hull":9}},"Layer 113":{"armorgirl/Layer 113":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[160.18,87.43,166.77,-98.46,-11.11,-104.77,-17.71,81.11],"hull":4}},"Layer 114":{"armorgirl/Layer 114":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[142.78,22.78,187.92,-80.81,53.16,-139.53,8.02,-35.94],"hull":4}},"Layer 115":{"armorgirl/Layer 115":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[98.73,-11.31,104.84,131.56,241.71,125.7,235.6,-17.17],"hull":4}},"Layer 116":{"armorgirl/Layer 116":{"x":-29.52,"y":-31.85,"rotation":11.24,"width":221,"height":248}},"Layer 117":{"armorgirl/Layer 117":{"x":-9.72,"y":-11.91,"rotation":104.52,"width":126,"height":173}},"Layer 118":{"armorgirl/Layer 118":{"x":-39.67,"y":7.7,"rotation":112.35,"width":222,"height":271}},"Layer 119":{"armorgirl/Layer 118":{"x":-31.33,"y":8.92,"scaleX":0.833,"scaleY":0.833,"rotation":106.02,"width":222,"height":271}},"Layer 120":{"armorgirl/Layer 118":{"x":-36.97,"y":7.47,"rotation":112.35,"width":222,"height":271}},"Layer 121":{"armorgirl/Layer 116":{"x":-29.52,"y":-31.85,"rotation":11.24,"width":221,"height":248}},"Layer 122":{"armorgirl/Layer 116":{"x":-29.52,"y":-31.85,"rotation":11.24,"width":221,"height":248}},"Layer 123":{"armorgirl/Layer 116":{"x":40.81,"y":-18.63,"scaleX":-1,"rotation":11.24,"width":221,"height":248}},"Layer 124":{"armorgirl/Layer 117":{"x":-9.72,"y":-11.91,"rotation":104.52,"width":126,"height":173}},"Layer 125":{"armorgirl/Layer 117":{"x":-9.72,"y":-11.91,"rotation":104.52,"width":126,"height":173}},"Layer 66":{"armorgirl/Layer 66":{"type":"mesh","uvs":[0.32569,0.08313,0.89643,0.50963,1,0.66624,1,0.78119,0.83076,1,0.59434,1,0.17285,0.77786,0.04853,0.64366,0,0.59126,0.05304,0.28835,0.07614,0.15643,0.23972,0,0.31017,0,0.74837,0.69123,0.09047,0.31804,0.06863,0.48759,0.80064,0.88714],"triangles":[11,12,0,10,11,0,14,10,0,9,10,14,15,9,14,8,9,15,7,8,15,13,0,1,13,1,2,14,0,13,15,14,13,6,7,15,15,16,6,13,2,3,16,13,3,16,15,13,5,6,16,4,16,3,5,16,4],"vertices":[26.16,178.05,446.44,132.15,536.56,89.44,556.66,39.53,492.41,-96.75,349.21,-154.43,55.07,-160.83,-43.7,-132.9,-82.26,-122,-103.1,22.44,-112.17,85.34,-40.45,193.16,2.22,210.35,388.52,17.19,-75.24,18.68,-58.82,-60.25,454.44,-55.1],"hull":13}},"Layer 68":{"armorgirl/Layer 68":{"type":"mesh","uvs":[1,0.09862,0.93031,0.29841,0.91447,0.53388,1,0.73367,1,0.90135,0.89863,0.82286,0.8036,0.67659,0.83132,0.85854,0.81548,1,0.68482,1,0.63334,0.83,0.59771,0.64805,0.51455,0.79789,0.38389,1,0.20967,1,0.3443,0.69086,0.39973,0.54101,0.19779,0.67659,0,0.74794,0,0.63021,0.21759,0.45896,0.38785,0.34122,0.59375,0,0.7838,0,1,0,0.56603,0.43755],"triangles":[23,24,0,1,23,0,25,21,22,25,22,23,1,25,23,2,25,1,16,21,25,20,21,16,6,11,25,16,25,11,2,6,25,17,19,20,17,20,16,15,16,11,6,2,3,18,19,17,12,15,11,5,6,3,10,11,6,7,10,6,5,3,4,13,14,15,12,13,15,9,10,7,8,9,7],"vertices":[-14.58,45.73,25.59,47.46,69.03,60.29,100.06,87.27,130.33,98.23,122.13,76.61,101.33,51.59,132.54,68,159.01,74.67,166.71,53.42,139.06,33.93,108.31,16.23,140.26,12.51,184.44,4.48,194.71,-23.86,130.97,-22.19,100.66,-22.97,137.03,-46.95,161.57,-74.45,140.32,-82.15,96.58,-57.96,65.29,-37.97,-8.44,-26.8,-19.64,4.11,-32.38,39.28,72.18,-2.69],"hull":25}},"Layer 69":{"armorgirl/Layer 69":{"type":"mesh","uvs":[1,0.24681,1,0.54871,0.9533,0.66322,0.76006,0.68196,0.48917,0.86726,0.48917,1,0.09685,1,0,0.78814,0.19026,0.71527,0.28679,0.50707,0.21206,0.33425,0.4736,0.26555,0.53276,0.09898,0.66665,0,0.80988,0,1,0,0.35217,0.76524,0.5421,0.46751,0.66042,0.27179,0.89706,0.34675],"triangles":[14,15,0,18,12,13,11,12,18,18,13,14,19,14,0,18,14,19,17,11,18,9,10,11,9,11,17,19,0,1,1,3,19,19,17,18,2,3,1,3,17,19,16,9,17,4,16,17,8,9,16,3,4,17,6,7,8,6,8,16,16,4,5,6,16,5],"vertices":[11.55,62.6,100.33,107.14,138.61,114.85,163.18,79.61,244.4,53.68,283.43,73.27,322.13,-3.88,269.39,-54.18,229.19,-27.52,158.44,-39.25,114.99,-79.44,68.99,-38.15,14.17,-51.09,-28.15,-39.36,-42.28,-11.2,-61.03,26.19,227.91,11.69,121.62,5.12,52.39,-0.49,51.09,57.1],"hull":16}},"Layer 70":{"armorgirl/Layer 70":{"type":"mesh","uvs":[0.75656,0.14669,1,0.43486,1,0.86475,0.52171,1,0.24553,0.80807,0.16072,1,0,1,0,0.33093,0,0,0.41515,0,0.19552,0.18448,0.58042,0.30258],"triangles":[10,8,9,11,9,0,10,9,11,7,8,10,11,0,1,4,10,11,7,10,4,11,1,2,3,4,11,6,7,4,5,6,4,2,3,11],"vertices":[192.19,54.39,275.54,28.35,287.69,-32.79,143.74,-81.39,52.99,-71.05,32.21,-103.55,-17.45,-113.42,-36.35,-18.27,-45.71,28.8,82.56,54.29,19.91,14.57,142.17,21.4],"hull":10}},"Layer 72":{"armorgirl/Layer 72":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[147.8,105.62,206.39,-56.09,73.83,-104.13,15.23,57.58],"hull":4}},"Layer 73":{"armorgirl/Layer 73":{"type":"mesh","uvs":[0.54026,0.15173,0.71477,0.28124,0.84787,0.41215,1,0.56276,1,0.78798,0.77984,0.91326,0.51955,1,0.43674,1,0.3273,0.94705,0.19715,0.76968,0.09067,0.59232,0,0.45437,0,0,0.43378,0,0.20307,0.33895,0.27701,0.47267,0.4042,0.65567,0.47815,0.79643,0.3835,0.26434,0.54913,0.40652,0.70294,0.55995,0.74139,0.73309,0.68223,0.84851,0.49589,0.88652],"triangles":[9,16,17,7,23,6,6,23,22,7,8,23,8,17,23,8,9,17,23,17,22,17,16,20,9,15,16,22,21,5,5,21,4,6,22,5,22,17,21,21,3,4,21,20,3,21,17,20,20,2,3,20,1,2,10,11,15,9,10,15,16,19,20,16,15,19,11,14,15,20,19,1,15,18,19,15,14,18,18,0,19,14,12,18,19,0,1,11,12,14,18,13,0,18,12,13],"vertices":[1,68,6.46,54.38,1,3,68,81.16,71.38,0.44444,78,-48.25,63.29,0.22222,79,-139.02,14.95,0.33333,4,68,153.19,78.91,0.11111,78,24.17,63.45,0.22222,79,-68.83,32.78,0.55556,81,-164.71,-0.54,0.11111,3,78,107.4,63.41,0.11111,79,11.88,53.06,0.55556,81,-91.4,38.83,0.33333,3,79,121.76,30.57,0.33333,81,20.63,43.84,0.55556,82,21.73,110.19,0.11111,3,79,172.41,-33.05,0.11111,81,85.29,-5.49,0.55556,82,86.38,60.87,0.33333,2,81,131.19,-65.17,0.33333,82,132.28,1.18,0.66667,2,81,132.07,-84.78,0.11111,82,133.16,-18.43,0.88889,2,80,162.09,-83.14,0.11111,82,107.98,-45.51,0.88889,2,80,69.38,-95.65,0.33333,82,21.13,-80.27,0.66667,3,68,176.64,-120.35,0.11111,80,-22.21,-102.66,0.55556,82,-65.96,-109.43,0.33333,3,68,104.73,-117.23,0.44444,80,-93.82,-109.94,0.44444,82,-133.62,-133.96,0.11111,1,68,-108.1,-40.39,1,1,68,-73.19,56.31,1,2,78,-74.94,-58.45,0.83333,80,-140.48,-51.27,0.16667,3,78,-7.33,-71.53,0.66667,80,-71.73,-47.45,0.22222,82,-127.46,-67.98,0.11111,3,78,87.86,-83.89,0.33333,80,23.59,-36.19,0.33333,82,-37.78,-33.8,0.33333,3,78,158.62,-98.49,0.11111,80,95.78,-33.08,0.22222,82,31.46,-13.16,0.66667,2,78,-89.88,-3.81,0.83333,79,-163,-60.28,0.16667,3,78,-9.05,0.87,0.66667,79,-85.77,-36.02,0.22222,81,-164.34,-71.39,0.11111,3,78,75.6,0.58,0.33333,79,-3.61,-15.63,0.33333,81,-89.65,-31.56,0.33333,3,78,157.25,-28.6,0.11111,79,82.69,-23.99,0.22222,81,-3.93,-18.6,0.66667,2,79,136.19,-49.25,0.16667,81,54.11,-30.03,0.83333,2,80,140.57,-37.95,0.16667,82,76.08,-6.95,0.83333],"hull":14}},"Layer 74":{"armorgirl/Layer 74":{"type":"mesh","uvs":[0.70897,0.7891,0.6428,0.49787,0.15833,0.40629,0.2245,0.15535,0.61916,0.08758,0.88148,0.1407,1,0.32936,1,0.61876,1,0.92282,0.88385,1,0.76805,1],"triangles":[0,1,7,1,4,5,1,5,6,3,4,1,2,3,1,1,6,7,9,10,0,8,9,0,0,7,8],"vertices":[3,11,166.8,-92.65,0.33333,60,39.13,-44.27,0.33333,68,-49.8,-38.3,0.33333,1,10,79.14,-55.89,1,1,10,142.58,71.83,1,1,10,228.73,33,1,1,10,228.3,-82.59,1,1,10,192.68,-151.46,1,1,10,117.32,-169.21,1,2,11,141.41,8.51,0.5,60,-11.76,46.76,0.5,3,11,244.71,-35.28,0.11111,60,99.38,31.44,0.22222,68,24.88,23.23,0.66667,2,60,123.05,-5.36,0.22222,68,40.38,-17.69,0.77778,3,11,245.04,-107.47,0.11111,60,118.53,-38.17,0.22222,68,29.14,-48.84,0.66667],"hull":11}},"Layer 75":{"armorgirl/Layer 75":{"type":"mesh","uvs":[0.86632,0.12428,1,0.38338,1,0.69377,0.90163,0.8962,0.76039,1,0.66484,1,0.77493,0.79094,0.8227,0.53453,0.66484,0.26193,0.34497,0.17826,0.05002,0.27002,0.29097,0,0.63576,0],"triangles":[8,12,0,8,0,1,9,12,8,10,11,9,9,11,12,7,1,2,7,8,1,6,7,2,3,4,6,4,5,6,3,6,2],"vertices":[3,54,83.63,-13.62,0.33333,56,-82.34,16.9,0.11111,55,-6.36,-19.83,0.55556,3,12,112.66,6.75,0.11111,54,30.81,-29.69,0.55556,55,-49.99,13.98,0.33333,3,12,66.7,-23.34,0.44444,54,-21.74,-13.7,0.44444,55,-67.32,66.11,0.11111,1,12,24.34,-24.04,1,1,12,-8.82,-6.93,1,1,12,-20.86,11.45,1,3,12,23.96,10.54,0.66667,54,-23.12,40.82,0.22222,55,-23.63,98.75,0.11111,4,12,67.94,26.21,0.33333,54,17.09,17.1,0.33333,56,-61.86,87.28,0.11111,55,-19.74,52.23,0.22222,4,12,88.41,83,0.11111,54,73.81,37.79,0.22222,56,-32.96,34.28,0.33333,55,29.92,17.9,0.33333,3,54,109.39,103.85,0.11111,56,37.67,8.94,0.66667,55,104.4,27.05,0.22222,2,56,107.13,15.15,0.77778,55,163.64,63.85,0.22222,2,56,45.37,-24.08,0.66667,55,126.13,1.03,0.33333,3,54,120.1,30.7,0.11111,56,-33.08,-12.56,0.33333,55,50.89,-23.98,0.55556],"hull":13}},"Layer 76":{"armorgirl/Layer 76":{"type":"mesh","uvs":[1,0.51489,0.7327,0.34594,0.5198,0.47411,0.35623,0.75376,0.18487,1,0,1,0.14852,0.64889,0.3017,0.23525,0.49383,0,0.68337,0,0.91704,0,1,0],"triangles":[2,3,7,3,6,7,4,5,6,3,4,6,7,8,2,1,8,9,1,2,8,0,1,10,11,0,10,1,9,10],"vertices":[1,13,-13.31,6.4,1,3,13,37.59,10.91,0.4375,52,-13.4,23.89,0.45313,53,-59.55,39.09,0.10938,3,13,70.48,34.65,0.125,52,26.78,18.38,0.53125,53,-22.51,22.56,0.34375,2,52,63.42,27.85,0.33333,53,15.31,21.41,0.66667,2,52,100.31,34.23,0.10938,53,52.51,17.22,0.89063,1,53,78.93,-4.21,1,2,52,95.31,5.1,0.10938,53,39.57,-9.35,0.89063,2,52,56.18,-15.23,0.33333,53,-3.69,-17.93,0.66667,3,13,88.75,0,0.10938,52,16.11,-19.3,0.54688,53,-43.3,-10.63,0.34375,3,13,56.15,-12.38,0.375,52,-16.04,-5.78,0.51563,53,-70.38,11.34,0.10938,2,13,15.96,-27.65,0.77778,52,-55.67,10.9,0.22222,1,13,1.69,-33.07,1],"hull":12}},"Layer 77":{"armorgirl/Layer 77":{"type":"mesh","uvs":[0.92165,0.08911,1,0.40653,0.95859,0.73677,0.86501,1,0.83546,0.75922,0.64092,0.81693,0.39221,0.78807,0.15088,0.74318,0,0.65341,0,0.53157,0.08685,0.27187,0.30602,0.06026,0.49071,0,0.70741,0,0.89456,0.52516,0.87486,0.22698,0.24692,0.43859,0.42914,0.25584,0.51041,0.55722,0.61137,0.37767,0.6754,0.57325,0.75912,0.36485],"triangles":[3,4,2,6,18,5,5,20,4,5,18,20,4,14,2,4,20,14,18,19,20,18,17,19,2,14,1,20,21,14,20,19,21,1,14,15,14,21,15,15,0,1,19,13,21,21,13,15,15,13,0,18,6,16,6,7,16,16,7,9,7,8,9,9,10,16,16,10,17,16,17,18,10,11,17,17,11,12,19,17,13,13,17,12],"vertices":[1,50,-17.59,14.54,1,2,50,15.34,51.74,0.79432,51,-37.08,50.72,0.20568,2,50,61.76,69.92,0.40011,51,8.58,70.72,0.59989,2,50,104.76,74.31,0.3243,51,51.37,76.8,0.6757,2,50,76.82,51.08,0.32471,51,24.38,52.49,0.67529,1,51,52.11,25.48,1,2,49,38.53,49.57,0.41668,51,74.72,-17.35,0.58332,1,49,55.44,5.4,1,1,49,57.98,-26.68,1,1,49,42.11,-35.51,1,2,48,58.47,-38.26,0.3298,49,0.11,-39.59,0.6702,2,14,87.32,-26.59,0.15143,48,5.69,-34.27,0.84857,2,14,50.4,-27.46,0.84555,48,-27.28,-17.61,0.15445,1,14,9.39,-18.21,1,2,50,40.98,43.16,0.64747,51,-11.13,43.15,0.35253,1,50,4.71,17.21,1,2,48,51.25,0.85,0.22603,49,6.72,-0.38,0.77397,2,14,70.43,7.09,0.24388,48,6.7,3.4,0.75612,3,48,24.17,47.67,0.1335,49,-2.67,52.89,0.1305,51,33.39,-16.8,0.736,3,14,39.94,32.58,0.10382,50,50.09,-15.31,0.47929,51,0.29,-14.9,0.41689,1,51,18,11.36,1,1,50,33.83,8.37,1],"hull":14}},"Layer 78":{"armorgirl/Layer 78":{"type":"mesh","uvs":[1,0.11899,0.80052,0.3588,0.91307,0.50369,1,0.6156,1,0.78366,0.46308,1,0.19767,0.90262,0,0.70246,0,0.43622,0.23559,0.20585,0.37208,0,0.69436,0,0.49341,0.22662,0.31142,0.44755,0.34554,0.64204,0.60715,0.80254],"triangles":[14,1,2,15,2,3,15,14,2,4,15,3,5,15,4,7,13,14,6,7,14,6,14,15,5,6,15,8,9,13,1,14,13,7,8,13,12,10,11,9,10,12,1,11,0,12,11,1,13,9,12,1,13,12],"vertices":[1,83,-60.89,59.06,1,3,83,4.74,56.96,0.58101,84,-38.8,56.8,0.13461,86,-61,40.52,0.28439,1,86,-21.76,42.83,1,1,86,8.54,44.61,1,2,85,41.46,75.83,0.11772,86,49.03,31.62,0.88228,2,85,72.92,-5.31,0.25019,86,80.48,-49.52,0.74981,4,83,160.28,34.44,0.14558,84,108.24,1.31,0.11347,85,39.24,-29.63,0.17813,86,46.8,-73.84,0.56282,4,83,121.69,-6.74,0.29778,84,61.69,-30.58,0.13872,85,-16.59,-37.87,0.14577,86,-9.02,-82.08,0.41773,4,83,58.67,-30.51,0.52863,84,-4.98,-40.22,0.13951,85,-80.73,-17.3,0.11036,86,-73.16,-61.51,0.22149,2,83,-6.34,-23.3,0.89169,86,-119.59,-15.44,0.10831,1,83,-61.14,-25.59,1,1,83,-75.47,12.4,1,2,83,-12.89,8.95,0.84823,84,-66.36,13.71,0.15177,4,83,47.5,7.22,0.47371,84,-7.76,-0.98,0.1925,85,-66.01,19.19,0.11561,86,-58.45,-25.02,0.21817,4,83,92.02,28.61,0.24136,84,40.33,10.32,0.13652,85,-17.84,8.25,0.10545,86,-10.28,-35.96,0.51667,3,83,118.39,73.78,0.137,85,30.89,27.24,0.12308,86,38.46,-16.97,0.73992],"hull":12}},"Layer 79":{"armorgirl/Layer 79":{"type":"mesh","uvs":[0.86271,0.06676,1,0.20997,1,0.372,1,0.52254,0.73566,0.65739,0.85763,0.77969,1,0.8696,1,1,0.55778,0.97622,0.25285,0.92291,0.14612,0.79119,0,0.6438,0,0.49222,0.10038,0.33646,0.19694,0.22461,0.25793,0.09708,0.11563,0,0.61877,0,0.84747,0.94695,0.695,0.87378,0.53745,0.76192,0.46122,0.59676,0.66451,0.43473,0.39007,0.81419,0.2376,0.63857,0.30875,0.44518,0.46775,0.88924],"triangles":[15,17,22,22,17,0,22,0,1,15,16,17,25,14,15,8,18,7,8,19,18,18,6,7,9,26,8,9,23,26,8,26,19,18,5,6,18,19,5,9,10,23,26,20,19,26,23,20,19,20,5,20,4,5,10,24,23,10,11,24,20,21,4,23,24,21,23,21,20,11,12,24,21,22,4,24,12,25,24,25,21,13,14,25,4,22,3,25,12,13,21,25,22,22,2,3,22,25,15,2,22,1],"vertices":[1,16,17.06,37.52,1,1,16,83.68,40.95,1,2,74,-10.38,52.82,0.79032,16,156.97,30.38,0.20968,2,74,57.26,65.35,0.45368,75,-30.86,69.02,0.54632,4,74,122.38,52.14,0.23117,75,31.59,46.33,0.30092,76,-21.67,30.23,0.28998,77,-76.24,64.51,0.17794,3,75,87.05,59.72,0.10467,76,35.39,30.95,0.3932,77,-23.52,42.7,0.50213,1,77,18.01,30.77,1,1,77,67.38,-2.61,1,1,77,35.09,-30.96,1,2,76,88.94,-37.22,0.31088,77,-1.15,-41.06,0.68912,2,76,27.94,-35.72,0.6964,77,-56.63,-15.65,0.3036,4,74,128.87,-16.99,0.16705,75,27.78,-23,0.37845,76,-40.8,-36.51,0.33273,77,-120.12,10.71,0.12176,2,74,60.75,-29.6,0.39984,75,-41.45,-25.4,0.60016,2,74,-10.96,-33.29,0.83703,16,128.82,-51,0.16297,1,16,79.53,-34.72,1,1,16,22.66,-20.72,1,1,16,-23.16,-27.63,1,1,16,-16.41,19.18,1,1,77,39.26,-0.91,1,1,77,3.53,5.95,1,3,75,79.98,29.36,0.12971,76,21.74,2.92,0.31167,77,-47.11,22.32,0.55862,3,74,99.83,21.73,0.25055,75,4.79,19.58,0.30857,76,-53.74,10.12,0.44088,2,74,23.54,27.03,0.77683,75,-69.88,36.11,0.22317,2,76,42.58,-15.18,0.45967,77,-35.08,-2.54,0.54033,4,74,122.45,4.54,0.24472,75,24.62,-0.76,0.30188,76,-38.94,-14.13,0.29643,77,-109.59,30.55,0.15697,2,74,34.33,-4.98,0.78466,75,-63.94,2.86,0.21534,1,77,-2.58,-15.7,1],"hull":18}},"Layer 80":{"armorgirl/Layer 80":{"type":"mesh","uvs":[1,0.16977,1,0.58014,0.87686,0.77907,0.66261,0.9307,0.3906,1,0.25086,1,0.14839,0.90288,0.03102,0.76377,0,0.59266,0.06642,0.16003,0.32911,0,0.72223,0,0.03288,0.39652,0.35892,0.24906,0.2993,0.53145,0.21547,0.63022,0.27322,0.72482,0.26577,0.81663,0.56386,0.79437,0.72036,0.5245,0.71291,0.20037],"triangles":[20,10,11,20,11,0,13,10,20,9,10,13,12,9,13,19,20,0,13,20,19,14,12,13,14,13,19,19,0,1,12,8,9,15,8,12,14,15,12,16,15,14,7,8,15,7,15,16,2,19,1,18,14,19,18,19,2,16,14,18,17,7,16,17,16,18,6,7,17,3,18,2,5,6,17,5,17,18,4,5,18,4,18,3],"vertices":[139.35,-109.59,49.27,-89.3,10.15,-59.29,-15.23,-16.68,-20.4,31.33,-15.24,54.23,9.86,66.22,44.72,78.58,83.43,75.21,175.94,42.94,201.37,-8.02,186.87,-72.45,125.27,60.13,145.6,-0.6,85.82,23.13,67.23,41.75,44.33,36.96,24.46,42.72,18.34,-7.23,71.8,-46.22,143.23,-61.02],"hull":12}},"Layer 81":{"armorgirl/Layer 81":{"type":"mesh","uvs":[1,1,0.2941,1,0,1,0,0,0.6466,0,1,0,0.2001,0.45902,0.60743,0.14901],"triangles":[7,3,4,6,3,7,2,3,6,0,1,6,2,6,1,7,4,5,0,7,5,0,6,7],"vertices":[-33.33,-13.39,-26.81,15.54,-24.1,27.59,26.63,16.16,20.67,-10.33,17.4,-24.81,1.5,13.21,13.47,-7.02],"hull":6}},"Layer 82":{"armorgirl/Layer 82":{"type":"mesh","uvs":[1,1,0.37291,1,0,1,0,0,0.44126,0,1,0],"triangles":[1,2,3,4,1,3,4,5,0,1,4,0],"vertices":[-74.73,-78.14,-52.83,19.14,-39.8,76.98,44.1,58.09,28.69,-10.36,9.17,-97.03],"hull":6}},"Layer 84":{"armorgirl/Layer 84":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-86.02,-82.77,-50.66,74.3,35.19,54.97,-0.17,-102.1],"hull":4}},"Layer 85":{"armorgirl/Layer 85":{"type":"mesh","uvs":[0.41346,0.1743,0.88406,0.25305,1,0.69776,0.71707,1,0.25027,1,0,0.73018,0,0.45688],"triangles":[5,6,0,4,5,0,3,4,0,0,2,3,2,0,1],"vertices":[26.33,-1.58,12.52,-38.51,-19.09,-41.25,-33.99,-13.83,-25.48,23.97,-3.01,40.21,15.12,36.12],"hull":7},"armorgirl/Layer 851":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-43.71,-27.86,-22.35,43.49,43.02,24.88,21.66,-46.47],"hull":4}},"Layer 86":{"armorgirl/Layer 86":{"x":23.5,"y":2.29,"rotation":-1.57,"width":73,"height":24}},"Layer 87":{"armorgirl/Layer 87":{"type":"mesh","uvs":[1,0.43028,0.72036,1,0.36598,1,0,0.7509,0,0.32903,0.36598,0],"triangles":[4,2,3,5,2,4,5,0,2,1,2,0],"vertices":[1.29,-22.34,-26.88,-2.24,-23.15,14.36,-5.68,28.43,17.37,23.24,31.49,2.05],"hull":6},"armorgirl/Layer 871":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-33.25,-9.66,-19.59,36.36,34.09,20.42,20.43,-25.59],"hull":4}},"Layer 88":{"armorgirl/Layer 88":{"x":16.06,"y":-2.17,"rotation":-142.02,"width":40,"height":32}},"Layer 89":{"armorgirl/Layer 89":{"type":"mesh","uvs":[1,0.41565,1,0.5663,1,0.76488,0.64921,1,0.16359,1,0,0.53891,0.11765,0.40195,0,0.16913,0.1439,0,0.67546,0,0.34052,0.34728,0.67844,0.56217,0.56366,0.38479,0.49679,0.59181,0.30285,0.54994],"triangles":[10,8,9,7,8,10,12,10,9,6,7,10,12,9,0,14,6,10,11,12,0,10,12,11,11,0,1,13,10,11,14,10,13,11,1,2,14,5,6,4,5,14,4,14,13,3,13,11,3,11,2,4,13,3],"vertices":[-4.28,-26.95,-11.04,-25.43,-19.96,-23.42,-26.81,-4.62,-21.69,18.12,0.73,21.13,5.64,14.23,17.32,17.39,23.4,8.94,17.79,-15.95,5.74,3.24,-7.47,-10.41,1.7,-6.83,-6.88,-1.6,-2.96,7.06],"hull":10}},"Layer 90":{"armorgirl/Layer 90":{"type":"mesh","uvs":[0.72202,0,0.76658,0.01533,0.82912,0.03685,1,0.15265,0.47693,0.87753,0.09183,1,0,0.91879,0,0.78996,0.2801,0.09148,0.26127,0.04116,0.55223,0,0.31604,0.12872,0.44612,0.27768],"triangles":[8,9,10,1,8,10,1,10,0,11,8,1,11,1,2,12,11,2,12,2,3,7,8,11,6,7,11,4,12,3,12,6,11,12,5,6,4,5,12],"vertices":[-135.4,26.01,-130.28,44.09,-123.09,69.46,-69.28,147.64,412.81,75.76,521.33,-40.94,481.04,-85.9,403.84,-105.88,-40.27,-115.53,-68.71,-129.97,-119.91,-33.82,-21.23,-97.09,56.16,-28.14],"hull":11}},"Layer 91":{"armorgirl/Layer 91":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[98.02,67.29,105.46,-44.46,-53.18,-55.03,-60.63,56.72],"hull":4}},"Layer 92":{"armorgirl/Layer 92":{"type":"mesh","uvs":[1,0.20499,0.70391,0.51834,0.69438,0.75894,0.56914,0.9366,0.39626,1,0.23019,1,0.1594,0.97717,0.12129,0.86526,0.25605,0.75475,0.33092,0.76174,0.45207,0.71698,0.50516,0.61346,0.46432,0.55751,0.34453,0.54772,0.22746,0.63025,0.23291,0.75475,0.08453,0.85826,0,0.78272,0,0.66102,0,0.53792,0.04778,0.39384,0.20841,0.28053,0.40171,0.24416,0.51333,0.28473,0.8305,0,0.96799,0,1,0,0.5705,0.39664,0.43301,0.35047,0.2615,0.39664,0.11992,0.49316,0.04642,0.68061,0.28736,0.83868,0.37448,0.85407,0.5038,0.78692,0.54328,0.65962,0.51469,0.5715],"triangles":[25,26,0,28,22,23,29,21,22,29,22,28,20,21,29,27,23,24,28,23,27,27,24,25,30,20,29,0,1,27,0,27,25,19,20,30,13,29,28,30,29,13,12,28,27,36,12,27,13,28,12,1,36,27,11,12,36,14,30,13,35,36,1,11,36,35,31,18,19,30,31,19,14,31,30,10,11,35,31,14,15,2,35,1,17,18,31,34,10,35,34,35,2,32,8,9,33,9,10,33,10,34,32,9,33,16,31,15,17,31,16,3,34,2,33,34,3,32,6,7,32,7,8,5,6,32,4,33,3,32,33,4,5,32,4],"vertices":[18.54,100.59,334.56,89.41,468.5,201.02,626.39,218.21,746.72,153.61,829.61,61.98,852.68,11.84,811.62,-63.55,685.02,-42.87,651.41,1.84,566.9,46.94,484.83,25.96,475.17,-23.75,529.7,-94.6,632.44,-119.11,696.57,-55.63,826.21,-87.22,827.84,-170.55,762.5,-229.66,696.4,-289.45,595.2,-333.07,454.19,-299.48,338.18,-210.49,304.25,-129.2,-6.93,-92.49,-75.55,-16.63,-91.53,1.03,335.8,-43.3,379.64,-141.58,490.03,-213.79,612.51,-245.02,749.84,-194.54,714.46,15.17,679.24,70.72,578.64,109.46,490.59,69.41,457.54,10.83],"hull":27}},"Layer 93":{"armorgirl/Layer 93":{"type":"mesh","uvs":[0.56763,0.24616,0.5579,0.43351,0.71046,0.5819,0.86952,0.70247,1,0.78965,1,1,0.62931,1,0.5157,0.89353,0.51245,0.80449,0.32418,0.68949,0.15213,0.54851,0.05151,0.33334,0.07098,0.14971,0.44428,0,0.65852,0],"triangles":[6,3,5,3,4,5,3,6,8,3,8,2,8,6,7,2,8,1,8,9,1,9,10,1,10,11,1,1,11,0,0,11,12,0,12,13,0,13,14],"vertices":[1,28,75.15,76.36,1,2,28,177.27,82.95,0.16747,65,26.58,65.11,0.83253,2,65,120.56,65.48,0.76523,66,-30.62,68.27,0.23477,1,66,51.71,72.84,1,1,66,113.93,80.15,1,1,66,209.35,16.19,1,1,66,144.94,-79.89,1,1,66,76.9,-76.97,1,1,66,35.95,-50.74,1,2,65,110.69,-68.25,0.88095,66,-48.93,-64.57,0.11905,2,28,251.69,-37.18,0.15407,65,17.15,-75.91,0.84593,1,28,137.67,-79.49,1,1,28,37.28,-82.86,1,1,28,-55.05,25.41,1,1,28,-61.33,91.96,1],"hull":15}},"Layer 94":{"armorgirl/Layer 94":{"x":217.35,"y":13.61,"rotation":93.82,"width":93,"height":127}},"Layer 95":{"armorgirl/Layer 95":{"type":"mesh","uvs":[1,0.37744,0.78568,0.55015,0.57649,1,0.21963,1,0,1,0,0.90436,0.10888,0.35987,0,0,0.59289,0,1,0,0.36319,0.35402],"triangles":[10,7,8,6,7,10,8,9,0,1,10,8,0,1,8,3,4,5,3,6,10,2,3,10,3,5,6,1,2,10],"vertices":[33.95,84.1,81.51,58.55,191.98,48.73,205.67,-9.27,214.1,-44.96,192.32,-50.1,64.14,-61.68,-13.64,-98.73,-36.39,-2.36,-52.01,63.81,53.05,-20.66],"hull":10}},"Layer 96":{"armorgirl/Layer 96":{"type":"mesh","uvs":[1,0.8766,0.79176,1,0.42533,1,0.11997,0.92629,0,0.79378,0,0.47906,0.20619,0.28581,0.46485,0.1533,0.68398,0,1,0,0.23852,0.65851,0.40377,0.42937,0.69476,0.26373,0.50436,0.75789,0.78457,0.64746],"triangles":[1,14,0,12,8,9,14,9,0,13,14,1,4,5,10,3,4,10,2,10,13,3,10,2,2,13,1,7,8,12,11,6,7,11,7,12,14,12,9,11,12,14,10,6,11,13,11,14,5,6,10,10,11,13],"vertices":[1,4,-25.72,50.14,1,2,73,48.27,92.11,0.66667,4,-49.34,83.67,0.33333,1,73,84.2,47.65,1,1,73,102.51,1.19,1,2,29,158.32,-55.88,0.11111,73,93.35,-30.27,0.88889,2,29,99.75,-81.4,0.33333,73,43.67,-70.43,0.66667,2,29,50.94,-67.58,0.66667,73,-7.06,-70.07,0.33333,3,29,10.16,-41.33,0.55556,73,-53.35,-55.6,0.11111,4,124.58,127.21,0.33333,1,4,154.19,91.72,1,1,4,152.07,42.46,1,2,29,118.28,-32.73,0.65278,73,48.61,-18.59,0.34722,2,29,65.34,-27.68,0.76852,73,-3.77,-27.78,0.23148,1,29,16.38,0.5,1,2,29,120.21,13.34,0.5,73,38.23,26.34,0.5,2,29,82.2,44.46,0.5,73,-6.68,46.25,0.5],"hull":10}},"Layer 97":{"armorgirl/Layer 97":{"type":"mesh","uvs":[1,0.12219,0.69443,0.37056,0.57113,0.49156,0.56366,0.73674,0.44784,0.87048,0.45158,1,0.32829,1,0.10785,1,0.0817,0.90232,0,0.85137,0,0.68261,0.0817,0.47245,0.33949,0.35464,0.53377,0.21772,0.82145,0,1,0,0.26104,0.81953,0.37686,0.63485,0.40301,0.44698,0.6197,0.29414],"triangles":[19,14,15,19,13,14,0,19,15,1,19,0,18,12,13,18,13,19,2,18,19,2,19,1,18,11,12,17,18,2,17,11,18,10,11,17,3,17,2,16,10,17,8,9,10,4,17,3,16,17,4,16,8,10,7,8,16,6,16,4,7,16,6,6,4,5],"vertices":[-30.39,2.62,28,-21.94,54.91,-30.39,94.91,-14.18,123.43,-20.71,144.11,-11.09,151.49,-28.04,164.7,-58.35,150.51,-68.82,147.18,-83.63,119.95,-95.5,81.15,-99.04,46.69,-71.87,12.96,-54.78,-39.41,-30.53,-50.1,-5.97,126.4,-49.98,89.67,-47.03,57.79,-56.64,20.14,-37.59],"hull":16}},"Layer 98":{"armorgirl/Layer 98":{"type":"mesh","uvs":[1,0.32854,1,0.6285,0.87248,0.86532,0.45407,1,0.21747,0.86401,0,0.73901,0,0.33643,0.40349,0,0.80811,0.03158,0.65178,0.71139,0.8265,0.36406,0.63798,0.07199],"triangles":[11,7,8,10,8,0,11,8,10,10,0,1,9,11,10,9,10,1,5,6,4,7,9,6,11,9,7,9,4,6,2,9,1,3,4,9,3,9,2],"vertices":[189.12,-1.17,155.25,0.28,129.04,13.78,115.57,54.98,131.91,77.25,146.92,97.73,192.37,95.78,228.68,55.05,223.44,15.99,147.34,34.43,185.82,15.82,219.58,32.67],"hull":9}},"Layer 99":{"armorgirl/Layer 99":{"type":"mesh","uvs":[0.65084,0.23617,0.80172,0.42011,1,0.58105,0.88794,0.81096,0.92027,1,0.69395,1,0.10658,1,0.13892,0.85407,0,0.72187,0,0.50058,0.18741,0.38274,0.1928,0.22755,0.11197,0,0.48379,0,0.59695,0,0.50534,0.23617,0.65623,0.42585,0.79633,0.60116,0.65084,0.80809,0.39189,0.39842,0.40242,0.79337],"triangles":[11,12,13,15,13,14,11,13,15,15,14,0,19,11,15,10,11,19,16,0,1,15,0,16,17,16,1,17,1,2,8,9,10,16,20,19,16,19,15,18,20,16,17,18,16,3,17,2,18,17,3,7,8,10,5,18,3,20,18,5,10,19,20,7,10,20,6,7,20,6,20,5,5,3,4],"vertices":[5.42,15.58,40.71,32.53,71.34,54.26,116.56,44.2,153.28,48.87,154.12,25.34,156.28,-35.7,127.72,-33.35,102.47,-48.71,59.35,-50.24,35.69,-31.57,5.43,-32.08,-38.61,-42.06,-39.99,-3.42,-40.4,8.35,5.96,0.46,42.37,17.45,76.01,33.23,116.88,19.54,38,-10.21,114.92,-6.39],"hull":15}}}},"animations":{"animation":{"slots":{"Layer 85":{"attachment":[{"time":0,"name":"armorgirl/Layer 85"},{"time":1.5667,"name":"armorgirl/Layer 851"},{"time":1.6,"name":"armorgirl/Layer 85"}]},"Layer 87":{"attachment":[{"time":0,"name":"armorgirl/Layer 87"},{"time":1.5667,"name":"armorgirl/Layer 871"},{"time":1.6,"name":"armorgirl/Layer 87"}]},"Layer 113":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff2c","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 114":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff0e","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 115":{"color":[{"time":0,"color":"ffffffff","curve":[0.264,0.06,0.752,1]},{"time":1,"color":"ffffff00","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 116":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff96","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 117":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 118":{"color":[{"time":0,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffff6a"}]},"Layer 119":{"color":[{"time":0,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffff6a"}]},"Layer 120":{"color":[{"time":0,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffff6a"}]},"Layer 121":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff94","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 122":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff3f","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 123":{"color":[{"time":0,"color":"ffffff28","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffff28"}]},"Layer 124":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]},"Layer 125":{"color":[{"time":0,"color":"ffffffff","curve":[0.25,0,0.75,1]},{"time":1,"color":"ffffff6a","curve":[0.25,0,0.75,1]},{"time":2,"color":"ffffffff"}]}},"bones":{"center":{"rotate":[{"time":0,"angle":10.91,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":11.16,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":9.17,"curve":[0.25,0,0.75,1]},{"time":2,"angle":10.91}],"translate":[{"time":0,"x":-2.28,"y":10.01,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"x":-23.66,"y":103.8,"curve":[0.25,0,0.75,1]},{"time":1.8333,"x":0,"y":0,"curve":[0.29,0,0.629,0.38]},{"time":2,"x":-2.28,"y":10.01}]},"Layer 108":{"rotate":[{"time":0,"angle":6.56,"curve":[0.352,0.65,0.687,1]},{"time":0.0667,"angle":6.33,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":-4.19,"curve":[0.246,0,0.723,0.88]},{"time":2,"angle":6.56}],"translate":[{"time":0,"x":2.91,"y":-8.71,"curve":[0.354,0.65,0.688,1]},{"time":0.0667,"x":3.43,"y":-8.95,"curve":[0.25,0,0.75,1]},{"time":1.1333,"x":-27.95,"y":3.29,"curve":[0.246,0,0.721,0.87]},{"time":2,"x":2.91,"y":-8.71}]},"Layer 104":{"rotate":[{"time":0,"angle":-3.36,"curve":[0.382,0.57,0.735,1]},{"time":0.5,"angle":0.02,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-9.75,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-3.36}]},"Layer 106":{"rotate":[{"time":0,"angle":-2.37,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":10.71,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-7.55,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":-2.37}]},"Layer 103":{"rotate":[{"time":0,"angle":8.97,"curve":[0.25,0,0.75,1]},{"time":1,"angle":0.93,"curve":[0.25,0,0.75,1]},{"time":2,"angle":8.97}],"translate":[{"time":0,"x":4.01,"y":-10.74,"curve":[0.344,0.66,0.677,1]},{"time":0.0333,"x":3.98,"y":-10.85,"curve":[0.25,0,0.75,1]},{"time":1.0333,"x":5.99,"y":-1.26,"curve":[0.248,0,0.736,0.94]},{"time":2,"x":4.01,"y":-10.74}]},"bone":{"rotate":[{"time":0,"angle":-17.29,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":-16.88,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":-19.19,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":-17.29}]},"bone2":{"rotate":[{"time":0,"angle":-9.89,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":-8.57,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-9.89}]},"Layer 80":{"rotate":[{"time":0,"angle":13.52,"curve":[0.25,0,0.75,1]},{"time":1,"angle":11.08,"curve":[0.25,0,0.75,1]},{"time":2,"angle":13.52}],"translate":[{"time":0,"x":-4.23,"y":5.82,"curve":[0.25,0,0.75,1]},{"time":1,"x":-4.13,"y":25.09,"curve":[0.25,0,0.75,1]},{"time":2,"x":-4.23,"y":5.82}]},"Layer 91":{"rotate":[{"time":0,"angle":4.77,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":5.78,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-2.96,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":4.77}],"translate":[{"time":0,"x":0.47,"y":0.84,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0.35,"y":3.37,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":1.6,"y":-22.77,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":0.47,"y":0.84}]},"Layer 95":{"rotate":[{"time":0,"angle":0.95,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":3.07,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":0.55,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":0.95}]},"Layer 92":{"rotate":[{"time":0,"angle":-19.89,"curve":[0.25,0,0.75,1]},{"time":1,"angle":-3.44,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-19.89}]},"Layer 70":{"rotate":[{"time":0,"angle":3.54,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":2.57,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":12.55,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":3.54}],"translate":[{"time":0,"x":-0.17,"y":3.04,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":-1.76,"y":31.47,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":-0.17,"y":3.04}]},"Layer 69":{"rotate":[{"time":0,"angle":-1.62,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":-0.17,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-6.11,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-1.62}],"translate":[{"time":0,"x":21.84,"y":18.58}]},"Layer 68":{"rotate":[{"time":0,"angle":8.87,"curve":[0.25,0,0.75,1]},{"time":1,"angle":-6.97,"curve":[0.25,0,0.75,1]},{"time":2,"angle":8.87}]},"Layer 90":{"rotate":[{"time":0,"angle":-3.86,"curve":[0.25,0,0.75,1]},{"time":1,"angle":2.12,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-3.86}],"translate":[{"time":0,"x":0,"y":0},{"time":1,"x":-0.49,"y":3.13},{"time":2,"x":0,"y":0}]},"Layer 66":{"rotate":[{"time":0,"angle":-8.07,"curve":[0.378,0.61,0.722,1]},{"time":0.2333,"angle":-8.4,"curve":[0.25,0,0.75,1]},{"time":1.2333,"angle":1.48,"curve":[0.242,0,0.671,0.68]},{"time":2,"angle":-8.07}],"translate":[{"time":0,"x":36.41,"y":-15.11,"curve":[0.378,0.61,0.722,1]},{"time":0.2333,"x":39.62,"y":-10.78,"curve":[0.25,0,0.75,1]},{"time":1.2333,"x":20.31,"y":-36.8,"curve":[0.242,0,0.671,0.68]},{"time":2,"x":36.41,"y":-15.11}]},"Layer 93":{"rotate":[{"time":0,"angle":-10.36,"curve":[0.378,0.61,0.722,1]},{"time":0.2333,"angle":-8.35,"curve":[0.25,0,0.75,1]},{"time":1.2333,"angle":-20.41,"curve":[0.242,0,0.671,0.68]},{"time":2,"angle":-10.36}],"translate":[{"time":0,"x":-13.62,"y":-0.6,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":-48.01,"y":-2.11,"curve":[0.243,0,0.649,0.6]},{"time":2,"x":-13.62,"y":-0.6}]},"bone20":{"rotate":[{"time":0,"angle":-21.86,"curve":[0.372,0.48,0.752,1]},{"time":0.5333,"angle":-8.68,"curve":[0.25,0,0.75,1]},{"time":1.5333,"angle":-32.91,"curve":[0.252,0,0.622,0.48]},{"time":2,"angle":-21.86}]},"bone21":{"rotate":[{"time":0,"angle":-12.88,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"angle":20.35,"curve":[0.25,0,0.75,1]},{"time":1.8333,"angle":-16.43,"curve":[0.29,0,0.629,0.38]},{"time":2,"angle":-12.88}]},"Layer 112":{"rotate":[{"time":0,"angle":-2.34,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-8.24,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-2.34}]},"bone22":{"rotate":[{"time":0,"angle":15.99,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":23.5,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":13.01,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":15.99}]},"Layer 96":{"rotate":[{"time":0,"angle":6.42,"curve":[0.25,0,0.75,1]},{"time":0.5,"angle":11.71,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-7.76,"curve":[0.25,0,0.75,1]},{"time":2,"angle":6.42}],"translate":[{"time":0,"x":0.09,"y":-1.28,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":0.89,"y":-9.83,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":0.09,"y":-1.28}]},"bone28":{"rotate":[{"time":0,"angle":-1.65,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"angle":7.48,"curve":[0.25,0,0.75,1]},{"time":1.8333,"angle":-1.79,"curve":[0.29,0,0.629,0.38]},{"time":2,"angle":-1.65}]},"Layer 100":{"rotate":[{"time":0,"angle":4.02,"curve":[0.381,0.55,0.742,1]},{"time":0.3333,"angle":-352.06,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":-10.15},{"time":1.5,"angle":-10.01,"curve":[0.245,0,0.637,0.56]},{"time":2,"angle":4.02}],"translate":[{"time":0,"x":-0.1,"y":1.35,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":-1.02,"y":14,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":-0.1,"y":1.35}]},"bone27":{"rotate":[{"time":0,"angle":-10.45,"curve":[0.32,0.29,0.757,1]},{"time":0.8,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.8,"angle":-12.01,"curve":[0.284,0,0.625,0.38]},{"time":2,"angle":-10.45}]},"Layer 118":{"translate":[{"time":0,"x":3.47,"y":4.35},{"time":1,"x":-0.2,"y":-13.7},{"time":2,"x":3.47,"y":4.35}],"scale":[{"time":0,"x":0.833,"y":0.552},{"time":1,"x":1.132,"y":1.132},{"time":2,"x":0.833,"y":0.552}]},"Layer 119":{"translate":[{"time":0,"x":3.91,"y":0.44,"curve":[0.25,0,0.75,1]},{"time":1,"x":-0.03,"y":-3.11,"curve":[0.25,0,0.75,1]},{"time":2,"x":3.91,"y":0.44}],"scale":[{"time":0,"x":0.77,"y":0.439,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.301,"y":1.057,"curve":[0.25,0,0.75,1]},{"time":2,"x":0.77,"y":0.439}]},"Layer 120":{"translate":[{"time":0,"x":-9.02,"y":0.97,"curve":[0.25,0,0.75,1]},{"time":1,"x":-11.8,"y":-19.97,"curve":[0.25,0,0.75,1]},{"time":2,"x":-9.02,"y":0.97}],"scale":[{"time":0,"x":1,"y":0.796,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.268,"y":1.268,"curve":[0.25,0,0.75,1]},{"time":2,"x":1,"y":0.796}]},"Layer 123":{"translate":[{"time":0,"x":2.93,"y":0.39,"curve":[0.25,0,0.75,1]},{"time":1,"x":-14.07,"y":5.46,"curve":[0.25,0,0.75,1]},{"time":2,"x":2.93,"y":0.39}],"scale":[{"time":0,"x":1.197,"y":1.197,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.22,"y":0.614,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.197,"y":1.197}]},"Layer 124":{"translate":[{"time":0,"x":3.77,"y":1.49,"curve":[0.25,0,0.75,1]},{"time":1,"x":-5.85,"y":2.66,"curve":[0.25,0,0.75,1]},{"time":2,"x":3.77,"y":1.49}],"scale":[{"time":0,"x":1.437,"y":1.437,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.156,"y":0.568,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.437,"y":1.437}]},"Layer 125":{"translate":[{"time":0,"x":3.64,"y":2.47,"curve":[0.25,0,0.75,1]},{"time":1,"x":-7.5,"y":5.23,"curve":[0.25,0,0.75,1]},{"time":2,"x":3.64,"y":2.47}],"scale":[{"time":0,"x":1.344,"y":1.344,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.047,"y":0.393,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.344,"y":1.344}]},"Layer 116":{"translate":[{"time":0,"x":22.37,"y":-0.37,"curve":[0.25,0,0.75,1]},{"time":1,"x":-15.53,"y":-30.2,"curve":[0.25,0,0.75,1]},{"time":2,"x":22.37,"y":-0.37}],"scale":[{"time":0,"x":1.022,"y":1.022,"curve":[0.25,0,0.75,1]},{"time":1,"x":1,"y":0.7,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.022,"y":1.022}]},"Layer 117":{"translate":[{"time":0,"x":24.98,"y":8.97,"curve":[0.25,0,0.75,1]},{"time":1,"x":-14.24,"y":-31.36,"curve":[0.25,0,0.75,1]},{"time":2,"x":24.98,"y":8.97}],"scale":[{"time":0,"x":1.046,"y":1.046,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.023,"y":0.714,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.046,"y":1.046}]},"Layer 121":{"translate":[{"time":0,"x":26.43,"y":26.86,"curve":[0.25,0,0.75,1]},{"time":1,"x":-17.68,"y":-33.93,"curve":[0.25,0,0.75,1]},{"time":2,"x":26.43,"y":26.86}],"scale":[{"time":0,"x":1.132,"y":1.132,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.066,"y":0.836,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.132,"y":1.132}]},"Layer 122":{"rotate":[{"time":0,"angle":12.75,"curve":[0.25,0,0.75,1]},{"time":1,"angle":2.98,"curve":[0.25,0,0.75,1]},{"time":2,"angle":12.75}],"translate":[{"time":0,"x":6.99,"y":8.73,"curve":[0.25,0,0.75,1]},{"time":1,"x":-24.96,"y":-32.66,"curve":[0.25,0,0.75,1]},{"time":2,"x":6.99,"y":8.73}],"scale":[{"time":0,"x":0.804,"y":1,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.342,"y":1.244,"curve":[0.25,0,0.75,1]},{"time":2,"x":0.804,"y":1}]},"bone29":{"rotate":[{"time":0,"angle":7.73,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":17.18,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-3.77,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":7.73}],"translate":[{"time":0,"x":0.44,"y":-2.12,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.39,"y":-6.68,"curve":[0.243,0,0.649,0.6]},{"time":2,"x":0.44,"y":-2.12}]},"bone30":{"rotate":[{"time":0,"angle":-17.52,"curve":[0.25,0,0.75,1]},{"time":1,"angle":17.18,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-17.52}],"translate":[{"time":0,"x":-0.09,"y":-27.52,"curve":[0.311,0.25,0.757,1]},{"time":1,"x":-1.68,"y":20.28,"curve":[0.25,0,0.75,1]},{"time":2,"x":-0.09,"y":-27.52}]},"bone31":{"rotate":[{"time":0,"angle":-6.67,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":-16.12,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-19.9},{"time":2,"angle":-6.67}],"translate":[{"time":0,"x":-3.22,"y":-18.85,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"x":-4.49,"y":-26.32,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.43,"y":-14.58,"curve":[0.25,0,0.75,1]},{"time":2,"x":-3.22,"y":-18.85}]},"bone32":{"rotate":[{"time":0,"angle":-7.06,"curve":[0.265,0,0.618,0.43]},{"time":0.3333,"angle":-31.45,"curve":[0.25,0,0.75,1]},{"time":1.3667,"angle":22.38,"curve":[0.381,0.55,0.742,1]},{"time":2,"angle":-7.06}],"translate":[{"time":0,"x":-0.52,"y":-24.41,"curve":[0.25,0,0.75,1]},{"time":1,"x":8.76,"y":12.74,"curve":[0.25,0,0.75,1]},{"time":2,"x":-0.52,"y":-24.41}]},"bone16":{"rotate":[{"time":0,"angle":-4.11,"curve":[0.371,0.62,0.71,1]},{"time":0.3333,"angle":-3.71,"curve":[0.243,0,0.689,0.75]},{"time":1.3333,"angle":-7.85,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-4.11}]},"bone17":{"rotate":[{"time":0,"angle":2.26,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":5.96,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-1.44,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":2.26}]},"bone18":{"rotate":[{"time":0,"angle":-23.54,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"angle":10.42,"curve":[0.25,0,0.75,1]},{"time":1.8333,"angle":-27.16,"curve":[0.29,0,0.629,0.38]},{"time":2,"angle":-23.54}]},"bone19":{"rotate":[{"time":0,"angle":-17.94,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":-19.85,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":0},{"time":2,"angle":-17.94}]},"Layer 75":{"rotate":[{"time":0,"angle":2.99,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":3.87,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":-5.28,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":2.99}],"translate":[{"time":0,"x":-4.62,"y":1.58}]},"bone9":{"rotate":[{"time":0,"angle":-3.82,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":0.11,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-13.74,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-3.82}]},"bone10":{"rotate":[{"time":0,"angle":-13.63,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":-10.42,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-16.83,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":-13.63}]},"bone11":{"rotate":[{"time":0,"angle":5.28,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":31.94,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-14.26,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":5.28}]},"Layer 111":{"rotate":[{"time":0,"angle":-8.28,"curve":[0.352,0.65,0.687,1]},{"time":0.0667,"angle":-8.04,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":-18.54,"curve":[0.246,0,0.723,0.88]},{"time":2,"angle":-8.28}],"translate":[{"time":0,"x":3.66,"y":-7.2,"curve":[0.352,0.65,0.687,1]},{"time":0.0667,"x":2.86,"y":-7.47,"curve":[0.25,0,0.75,1]},{"time":1.0667,"x":37.07,"y":0.37,"curve":[0.246,0,0.723,0.88]},{"time":2,"x":3.66,"y":-7.2}]},"Layer 110":{"rotate":[{"time":0,"angle":-3.45,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":-0.95,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-7.19,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":-3.45}],"translate":[{"time":0,"x":-4.5,"y":-14.17}]},"bone33":{"rotate":[{"time":0,"angle":-10.89,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":-13.2,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":10.74,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":-10.89}],"translate":[{"time":0,"x":0.79,"y":-13.37,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0.38,"y":-16.58,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":4.61,"y":16.72,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":0.79,"y":-13.37}]},"bone35":{"rotate":[{"time":0,"angle":-6.41,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":-13.2},{"time":1.3333,"angle":10.74,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-6.41}],"translate":[{"time":0,"x":3.28,"y":-6.53,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"x":4.42,"y":-15.98,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0.38,"y":17.34,"curve":[0.243,0,0.649,0.6]},{"time":2,"x":3.28,"y":-6.53}]},"bone34":{"rotate":[{"time":0,"angle":-0.18,"curve":[0.372,0.48,0.752,1]},{"time":0.5333,"angle":-13.2},{"time":1.5333,"angle":10.74,"curve":[0.252,0,0.622,0.48]},{"time":2,"angle":-0.18}],"translate":[{"time":0,"x":2.23,"y":2.15,"curve":[0.372,0.48,0.752,1]},{"time":0.5333,"x":4.42,"y":-15.98,"curve":[0.25,0,0.75,1]},{"time":1.5333,"x":0.38,"y":17.34,"curve":[0.252,0,0.622,0.48]},{"time":2,"x":2.23,"y":2.15}]},"bone37":{"rotate":[{"time":0,"angle":6.76,"curve":[0.329,0.32,0.758,1]},{"time":0.7667,"angle":-13.2,"curve":[0.25,0,0.75,1]},{"time":1.7667,"angle":10.74,"curve":[0.278,0,0.622,0.39]},{"time":2,"angle":6.76}],"translate":[{"time":0,"x":-1.85,"y":11.7,"curve":[0.329,0.32,0.758,1]},{"time":0.7667,"x":8.2,"y":-14.42,"curve":[0.25,0,0.75,1]},{"time":1.7667,"x":-3.85,"y":16.91,"curve":[0.278,0,0.622,0.39]},{"time":2,"x":-1.85,"y":11.7}]},"bone36":{"rotate":[{"time":0,"angle":-5.86},{"time":0.6667,"angle":10.47,"curve":[0.344,0.66,0.677,1]},{"time":1.7,"angle":-13.2},{"time":2,"angle":-5.86}],"translate":[{"time":0,"x":2.1,"y":1.43,"curve":[0.341,0.66,0.674,1]},{"time":0.6667,"x":-3.72,"y":16.55,"curve":[0.344,0.66,0.677,1]},{"time":1.7,"x":8.2,"y":-14.42,"curve":[0.336,0.39,0.67,0.73]},{"time":2,"x":2.1,"y":1.43}]},"bone23":{"rotate":[{"time":0,"angle":-8.93,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":-4.99,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-14.09,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":-8.93}]},"bone24":{"rotate":[{"time":0,"angle":-10.1,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":9.27,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-19.29,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":-10.1}]},"bone25":{"rotate":[{"time":0,"angle":-10.32,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":35.38,"curve":[0.25,0,0.75,1]},{"time":2,"angle":-10.32}]},"bone26":{"rotate":[{"time":0,"angle":5.27,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":-20.94,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":35.49,"curve":[0.25,0,0.75,1]},{"time":2,"angle":5.27}]},"Layer 77":{"rotate":[{"time":0,"angle":-0.13,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.1,"angle":0.82,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":-0.13}],"translate":[{"time":0,"x":-3.3,"y":1.13}]},"bone3":{"rotate":[{"time":0,"angle":0.52,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":7.12,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-16.12,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":0.52}]},"bone4":{"rotate":[{"time":0,"angle":-6.95,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":8.17,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-22.08,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":-6.95}]},"bone5":{"rotate":[{"time":0,"angle":1.13,"curve":[0.38,0.53,0.745,1]},{"time":0.5,"angle":7.52,"curve":[0.246,0,0.633,0.54]},{"time":1.5,"angle":-4.72,"curve":[0.25,0,0.75,1]},{"time":2,"angle":1.13}],"translate":[{"time":0,"x":-3.3,"y":1.13}]},"bone6":{"rotate":[{"time":0,"angle":-9.59,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-13.39,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":-9.59}]},"Layer 76":{"rotate":[{"time":0,"angle":-5.24,"curve":[0.38,0.59,0.727,1]},{"time":0.2667,"angle":-4.59,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":-7.78,"curve":[0.242,0,0.663,0.65]},{"time":2,"angle":-5.24}],"translate":[{"time":0,"x":-4.62,"y":1.58}]},"bone7":{"rotate":[{"time":0,"angle":-4.14,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":9.75,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-8.28,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":-4.14}]},"bone8":{"rotate":[{"time":0,"angle":-16.49,"curve":[0.32,0.29,0.757,1]},{"time":0.8,"angle":7.62,"curve":[0.25,0,0.75,1]},{"time":1.8,"angle":-26.92,"curve":[0.284,0,0.625,0.38]},{"time":2,"angle":-16.49}]},"bone38":{"rotate":[{"time":0,"angle":-11.84}]},"bone39":{"rotate":[{"time":0,"angle":1.22,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":12.7,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":1.22}],"translate":[{"time":0,"x":-0.21,"y":1.24,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":-2.13,"y":12.82,"curve":[0.243,0,0.689,0.75]},{"time":2,"x":-0.21,"y":1.24}]},"bone40":{"rotate":[{"time":0,"angle":0.74,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"angle":9.77,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-8.29,"curve":[0.25,0,0.625,0.5]},{"time":2,"angle":0.74}],"translate":[{"time":0,"x":-0.13,"y":0.66,"curve":[0.375,0.5,0.75,1]},{"time":0.5,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.5,"x":0.78,"y":-22.16,"curve":[0.25,0,0.625,0.5]},{"time":2,"x":-0.13,"y":0.66}]},"bone41":{"rotate":[{"time":0,"angle":11.47,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.8333,"angle":12.7,"curve":[0.29,0,0.629,0.38]},{"time":2,"angle":11.47}],"translate":[{"time":0,"x":3.35,"y":11.25,"curve":[0.311,0.25,0.757,1]},{"time":0.8333,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.8333,"x":3.71,"y":12.46,"curve":[0.29,0,0.629,0.38]},{"time":2,"x":3.35,"y":11.25}]},"Layer 78":{"rotate":[{"time":0,"angle":14.31,"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"angle":16.46,"curve":[0.25,0,0.625,0.5]},{"time":0.5,"angle":20.42,"curve":[0.25,0,0.75,1]},{"time":1.1667,"angle":11.42,"curve":[0.243,0,0.689,0.75]},{"time":2,"angle":14.31}],"translate":[{"time":0,"x":19.15,"y":0.77,"curve":[0.255,0,0.62,0.47]},{"time":0.5,"x":19.6,"y":1.14,"curve":[0.25,0,0.75,1]},{"time":1.1667,"x":12.94,"y":-24.75,"curve":[0.25,0,0.75,1]},{"time":2,"x":19.15,"y":0.77}]},"bone12":{"rotate":[{"time":0,"angle":0.64,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":4.79,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-19.25,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":0.64}]},"bone13":{"rotate":[{"time":0,"angle":-33.69,"curve":[0.351,0.4,0.757,1]},{"time":0.6667,"angle":-11.61,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-42.98,"curve":[0.265,0,0.618,0.43]},{"time":2,"angle":-33.69}]},"bone14":{"rotate":[{"time":0,"angle":1.15,"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":4.06,"curve":[0.243,0,0.649,0.6]},{"time":2,"angle":1.15}]},"Layer 89":{"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":0.56,"y":3.41,"curve":[0.25,0,0.75,1]},{"time":2,"x":0,"y":0}]},"Layer 81":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1,"angle":2.26,"curve":[0.25,0,0.75,1]},{"time":2,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":0.96,"y":6.33,"curve":[0.25,0,0.75,1]},{"time":2,"x":0,"y":0}]},"Layer 82":{"rotate":[{"time":0,"angle":1.61},{"time":1,"angle":2.87},{"time":2,"angle":1.61}],"translate":[{"time":0,"x":0.47,"y":1.47,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.05,"y":6.97,"curve":[0.25,0,0.75,1]},{"time":2,"x":0.47,"y":1.47}],"scale":[{"time":0,"x":1,"y":1.078,"curve":[0.25,0,0.75,1]},{"time":1,"x":1,"y":0.857,"curve":[0.25,0,0.75,1]},{"time":2,"x":1,"y":1.078}]},"Layer 87":{"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":-1.46,"y":0.22,"curve":[0.25,0,0.75,1]},{"time":2,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":1,"x":1,"y":0.783,"curve":[0.25,0,0.75,1]},{"time":2,"x":1,"y":1}]},"Layer 85":{"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1,"x":1.68,"y":8.36,"curve":[0.25,0,0.75,1]},{"time":2,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":1,"x":1,"y":0.891,"curve":[0.25,0,0.75,1]},{"time":2,"x":1,"y":1}]},"Layer 79":{"translate":[{"time":0,"x":-1.03,"y":-3.23},{"time":1,"x":1.42,"y":9.41,"curve":[0.25,0,0.75,1]},{"time":2,"x":-1.03,"y":-3.23}]}},"deform":{"default":{"Layer 66":{"armorgirl/Layer 66":[{"time":0,"vertices":[-3.29587,-59.19702,-7.89099,-20.21533,-14.64337,-17.98328,-15.56494,-2.90295,31.20172,45.75659,28.56961,37.1217,23.2128,2.93713,20.81879,-7.4259,15.03717,-13.92639,6.32761,-22.52869,2.82773,-20.24207,-5.07208,-57.17749,-5.44781,-61.61865,27.32944,25.74194,14.12027,-28.04138,14.78571,-17.349,30.88254,38.6427],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-35.59915,-30.94385,-19.80453,-16.49207,-18.07401,-28.51904,-26.67075,-23.37573,-24.93707,-38.83508,-20.83551,-16.83594,-20.83551,-16.83594,-2.27551,-17.50671,-9.3559,-23.51135,-21.49707,-42.26953,-43.82983,-47.45081,-50.0152,-49.51587,-54.48935,-42.9906,-23.69345,-42.14111,-23.56171,-39.52161,-13.41272,-39.55994,-13.24753,-42.9502],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-3.29587,-59.19702,-7.89099,-20.21533,-14.64337,-17.98328,-15.56494,-2.90295,31.20172,45.75659,28.56961,37.1217,23.2128,2.93713,20.81879,-7.4259,15.03717,-13.92639,6.32761,-22.52869,2.82773,-20.24207,-5.07208,-57.17749,-5.44781,-61.61865,27.32944,25.74194,14.12027,-28.04138,14.78571,-17.349,30.88254,38.6427]}]},"Layer 68":{"armorgirl/Layer 68":[{"time":0,"vertices":[-4.64388,-3.20001,-4.55961,-1.00716,-5.09493,1.56836,-5.12935,-2.79818,-5.12935,-2.79818,-5.12935,-2.79818,-5.1097,-0.89753,-4.93649,-2.87443,-4.93649,-2.87443,-4.93649,-2.87443,-4.93649,-2.87443,-5.1097,-0.89753,-4.99204,-0.32476,-4.89421,-2.65354,-4.65279,-2.55356,-3.98221,-1.57753,-5.03503,-0.45425,-4.79921,-1.67369,-4.45441,-1.3201,-4.33171,-1.59701,-4.59308,-2.11774,-4.67064,-2.30446,-4.67064,-2.30446,-4.2468,1.31393,-4.61796,-3.056,-4.05062,2.67265],"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"vertices":[-4.65259,-3.00069,-4.52405,-0.96793,-4.9707,1.46127,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-5.09924,-0.57149,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-5.09924,-0.57149,-4.70288,0.00378,-4.65259,-3.00069,-4.65259,-3.00069,-3.94897,-1.3644,-5.09924,-0.57149,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-4.65259,-3.00069,-4.25562,1.31649,-4.65259,-3.00069,-4.03101,3.90748],"curve":[0.25,0,0.75,1]},{"time":1.1667,"vertices":[-0.20984,-6.02145,-4.8927,-1.3746,-6.25867,2.57159,-9.59546,-0.90115,-9.59546,-0.90115,-9.59546,-0.90115,-5.20764,-3.95175,-7.59595,-1.69171,-7.59595,-1.69171,-7.59595,-1.69171,-7.59595,-1.69171,-5.20764,-3.95175,-7.70081,-3.40237,-7.15759,0.59842,-4.65466,1.63504,-4.29358,-3.5741,-4.43347,0.64404,-6.17273,10.75717,-2.5979,14.42303,-1.32581,11.55222,-4.03564,6.15341,-4.83972,4.21762,-0.4873,3.26337,0.18823,0.33566,0.05884,-4.52835,-4.23437,-8.89478],"curve":[0.243,0,0.689,0.75]},{"time":2,"vertices":[-4.64388,-3.20001,-4.55961,-1.00716,-5.09493,1.56836,-5.12935,-2.79818,-5.12935,-2.79818,-5.12935,-2.79818,-5.1097,-0.89753,-4.93649,-2.87443,-4.93649,-2.87443,-4.93649,-2.87443,-4.93649,-2.87443,-5.1097,-0.89753,-4.99204,-0.32476,-4.89421,-2.65354,-4.65279,-2.55356,-3.98221,-1.57753,-5.03503,-0.45425,-4.79921,-1.67369,-4.45441,-1.3201,-4.33171,-1.59701,-4.59308,-2.11774,-4.67064,-2.30446,-4.67064,-2.30446,-4.2468,1.31393,-4.61796,-3.056,-4.05062,2.67265]}]},"Layer 69":{"armorgirl/Layer 69":[{"time":0,"vertices":[-0.90862,1.53915,4.70268,-7.15198,5.28151,-17.16463,6.08945,-3.47997,6.57861,-3.33002,-0.48622,-1.48754,-5.31789,-2.60876,6.0935,-3.21151,6.57861,-3.33002,3.33881,-4.29725,-0.78678,1.48634,-3.19135,0.54727,-0.90862,1.53915,-0.90862,1.53915,-0.90862,1.53915,-0.90862,1.53915,6.66713,-2.64828,3.01273,-4.04794,-3.72869,0.70822,-0.51838,1.51116],"curve":[0.286,0.15,0.755,1]},{"time":1,"offset":2,"vertices":[-0.4718,-6.7619,-0.01416,-9.56201,5.66711,-5.66486,19.56238,-1.40524,5.7821,1.9614,8.67896,1.16986,13.19226,4.34503,19.56238,-1.40524,3.46094,-1.50015,3.46094,-1.50015,11.08545,-0.7951,0,0,0,0,0,0,0,0,15.81396,-3.27298,14.85339,-4.1347,16.47681,-5.93994,11.08545,-0.7951],"curve":[0.25,0,0.75,1]},{"time":1.9,"vertices":[-0.94177,1.59531,4.89148,-7.16621,5.47473,-17.44203,6.10486,-3.40025,6.10486,-3.40025,0.16504,-3.66856,-6.02124,-2.76326,6.10486,-3.40025,6.10486,-3.40025,3.33435,-4.39931,-0.94177,1.59531,-3.71228,0.59625,-0.94177,1.59531,-0.94177,1.59531,-0.94177,1.59531,-0.94177,1.59531,6.14075,-2.64212,2.58069,-4.04477,-4.46594,0.95079,-0.94177,1.59531],"curve":[0.307,0,0.642,0.35]},{"time":2,"vertices":[-0.90862,1.53915,4.70268,-7.15198,5.28151,-17.16463,6.08945,-3.47997,6.57861,-3.33002,-0.48622,-1.48754,-5.31789,-2.60876,6.0935,-3.21151,6.57861,-3.33002,3.33881,-4.29725,-0.78678,1.48634,-3.19135,0.54727,-0.90862,1.53915,-0.90862,1.53915,-0.90862,1.53915,-0.90862,1.53915,6.66713,-2.64828,3.01273,-4.04794,-3.72869,0.70822,-0.51838,1.51116]}]},"Layer 70":{"armorgirl/Layer 70":[{"time":0,"offset":6,"vertices":[13.66196,1.61487,8.459,2.46094,-13.61344,-4.09924,-2.65504,-12.90881,10.9584,-8.80957,10.9584,-8.80957,8.459,2.46094,8.459,2.46094,13.66196,1.61487],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-15.62724,-3.16919,0,0,0,0,-15.62724,-3.16919,0.6891,-13.81116,-11.3138,-17.48108,-24.60717,-7.74316,-11.55806,-1.06921,-11.55806,-1.06921,-11.55806,-1.06921,-11.55806,-1.06921,-15.62724,-3.16919],"curve":[0.25,0,0.75,1]},{"time":2,"offset":6,"vertices":[13.66196,1.61487,8.459,2.46094,-13.61344,-4.09924,-2.65504,-12.90881,10.9584,-8.80957,10.9584,-8.80957,8.459,2.46094,8.459,2.46094,13.66196,1.61487]}]},"Layer 72":{"armorgirl/Layer 72":[{"time":0,"vertices":[-2.83621,-0.3367,-6.37897,1.67648,-5.9079,-7.66467,-8.17065,-0.97666],"curve":[0.382,0.57,0.735,1]},{"time":0.3333,"vertices":[-0.25916,-2.14133,-4.72144,-2.45988,-4.72144,-2.45988,-4.72144,-2.45988],"curve":[0.242,0,0.669,0.67]},{"time":1.1667,"vertices":[-3.32487,-3.1325,-5.11804,3.31734,-0.88286,20.55601,-10.3188,-4.38403],"curve":[0.379,0.6,0.723,1]},{"time":1.4333,"vertices":[-3.98071,-3.34454,-5.20288,4.55325,-7.19958,16.74559,-11.51624,-4.79565],"curve":[0.243,0,0.649,0.6]},{"time":2,"vertices":[-2.83621,-0.3367,-6.37897,1.67648,-5.9079,-7.66467,-8.17065,-0.97666]}]},"Layer 73":{"armorgirl/Layer 73":[{"time":0,"vertices":[-8.82202,-25.3374,-8.82202,-25.3374,-1.89807,-26.76001,4.5022,-26.44655,-8.82202,-25.3374,-1.89807,-26.76001,4.5022,-26.44655,11.00598,-24.46481,-1.89807,-26.76001,4.5022,-26.44655,11.00598,-24.46481,4.5022,-26.44655,11.00598,-24.46481,5.39453,-26.27809,4.5022,-26.44655,11.00598,-24.46481,5.39453,-26.27809,11.00598,-24.46481,5.39453,-26.27809,11.00598,-24.46481,5.39453,-26.27809,7.35156,-25.80084,5.39453,-26.27809,7.35156,-25.80084,5.39453,-26.27809,-8.82202,-25.3374,7.35156,-25.80084,5.39453,-26.27809,-8.82202,-25.3374,7.35156,-25.80084,5.39453,-26.27809,-8.82202,-25.3374,-8.82202,-25.3374,-1.89807,-26.76001,7.35156,-25.80084,-1.89807,-26.76001,7.35156,-25.80084,5.39453,-26.27809,-1.89807,-26.76001,7.35156,-25.80084,5.39453,-26.27809,-1.89807,-26.76001,7.35156,-25.80084,5.39453,-26.27809,-1.89807,-26.76001,4.5022,-26.44655,-1.89807,-26.76001,4.5022,-26.44655,11.00598,-24.46481,-1.89807,-26.76001,4.5022,-26.44655,11.00598,-24.46481,-1.89807,-26.76001,4.5022,-26.44655,11.00598,-24.46481,4.5022,-26.44655,11.00598,-24.46481,7.35156,-25.80084,5.39453,-26.27809]}]},"Layer 74":{"armorgirl/Layer 74":[{"time":0,"vertices":[3.6521,-2.04095,4.03662,-1.09845,3.97302,-1.31366,-3.95752,1.35571,-3.95752,1.35571,-3.95752,1.35571,-3.95752,1.35571,-0.45813,11.50232,-0.45813,11.50232,-1.59827,-11.40363,1.20313,-11.45139,-1.59827,-11.40363,1.20313,-11.45139,0.58655,-11.50006,4.03662,-1.09845,3.97302,-1.31366,3.6521,-2.04095,4.03662,-1.09845,3.97302,-1.31366],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-0.65955,0.22607,-0.69458,0.05991,-0.69006,0.09705,0.68921,-0.10452,-7.36072,-3.59183,-7.36072,-3.59183,-7.36072,-3.59183,0.12463,-3.84982,0.12463,-3.84982,0.56348,3.81085,-0.2561,3.82211,0.56348,3.81085,-0.2561,3.82211,-0.22009,3.85574,-0.69458,0.05991,-0.69006,0.09705,-0.65955,0.22607,-0.69458,0.05991,-0.69006,0.09705],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[3.6521,-2.04095,4.03662,-1.09845,3.97302,-1.31366,-3.95752,1.35571,-3.95752,1.35571,-3.95752,1.35571,-3.95752,1.35571,-0.45813,11.50232,-0.45813,11.50232,-1.59827,-11.40363,1.20313,-11.45139,-1.59827,-11.40363,1.20313,-11.45139,0.58655,-11.50006,4.03662,-1.09845,3.97302,-1.31366,3.6521,-2.04095,4.03662,-1.09845,3.97302,-1.31366]}]},"Layer 75":{"armorgirl/Layer 75":[{"time":0,"vertices":[1.30017,3.37115,3.60347,-0.26221,3.19574,1.68457,-3.87329,8.23413,3.27722,8.48962,8.04919,4.245,-4.27808,9.09271,3.61902,9.37445,8.88861,4.68689,-3.08337,6.55487,-0.66248,1.40759,1.11792,-2.37567,-0.22632,0.4801,0.18945,0.49628,0.47003,0.24744,-0.62573,1.33063,0.5282,1.37262,1.46688,-0.1062,1.30096,0.68494,2.34558,-4.98358,-1.98657,-5.13629,-5.49236,0.40576,-4.87079,-2.57056,-6.90051,-17.85541,-19.09066,1.40515,-16.93097,-8.93262,-32.232,2.37012,-28.58545,-15.0813,-20.77255,1.52917,-18.42267,-9.71875,-2.09656,-5.42187,-5.79744,0.42773,-5.14172,-2.71301],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[0.05444,-2.52508,-2.51744,-0.2041,-1.6178,-1.93933,1.85461,-2.0896,0.06018,-2.79188,-1.78857,-2.14465,1.54199,-1.73792,0.05005,-2.32106,-1.48755,-1.78259,1.02051,-1.14966,0.23669,-0.26697,-0.25281,0.28333,0.34705,-0.39124,0.01221,-0.52295,-0.33398,-0.40125,0.85681,-0.96594,0.02771,-1.28992,-1.28596,-0.10425,-0.82544,-0.9906,0.54749,-0.61633,0.01892,-0.82346,-0.82099,-0.06616,-0.52563,-0.63306,-0.02441,1.16815,1.16451,0.09424,0.74963,0.89746,3.44945,0.28076,2.21851,2.65662,1.16285,0.09424,0.7478,0.89624,0.02869,-1.3101,-1.30618,-0.10522,-0.8385,-1.00598],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[1.30017,3.37115,3.60347,-0.26221,3.19574,1.68457,-3.87329,8.23413,3.27722,8.48962,8.04919,4.245,-4.27808,9.09271,3.61902,9.37445,8.88861,4.68689,-3.08337,6.55487,-0.66248,1.40759,1.11792,-2.37567,-0.22632,0.4801,0.18945,0.49628,0.47003,0.24744,-0.62573,1.33063,0.5282,1.37262,1.46688,-0.1062,1.30096,0.68494,2.34558,-4.98358,-1.98657,-5.13629,-5.49236,0.40576,-4.87079,-2.57056,-6.90051,-17.85541,-19.09066,1.40515,-16.93097,-8.93262,-32.232,2.37012,-28.58545,-15.0813,-20.77255,1.52917,-18.42267,-9.71875,-2.09656,-5.42187,-5.79744,0.42773,-5.14172,-2.71301]}]},"Layer 77":{"armorgirl/Layer 77":[{"time":0,"offset":18,"vertices":[-2.93945,4.18542,-3.68469,6.63464,-4.33362,6.22998,3.3446,-1.96661,2.91406,-1.17493,3.2041,-1.70782,4.87378,-2.46887,4.18335,-3.51044,9.84131,-1.40076,7.96265,-5.95056,9.84131,-1.40076,7.96265,-5.95056,9.84131,-1.40076,0,0,0,0,0,0,-2.57397,2.90198,-1.85083,3.41077,8.63916,-0.96899,7.11658,-4.995,-3.45154,3.77478,-2.50537,4.45947,-2.93945,4.18542,-4.8396,1.65552,-2.01831,4.69977,-2.93945,4.18542,-2.93945,4.18542,-2.01831,4.69977],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[4.71167,-7.35181,5.82813,-9.11298,6.74414,-8.4491,5.02246,-7.85071,5.80933,-7.2793,3.44092,-5.37097,3.9762,-4.97864,3.1416,-4.89478,3.62793,-4.53687,0.76245,-2.38135,-4.89294,3.0509,-4.23267,3.89807,-13.32361,9.18103,-19.36279,19.3894,-18.81958,18.91492,-19.2854,12.38245,-15.98108,16.43274,-15.68628,4.47681,-13.42993,9.25952,-10.84998,3.67334,-9.10406,6.95215,-4.94388,2.69238,4.19238,-6.54236,4.84631,-6.06482,3.98059,-6.2052,-7.54309,-1.23682,-7.63049,0.50854,-3.10165,-4.19812,-4.27686,-2.98328,1.0083,-5.26941,-0.21545,-5.35706,-1.06775,-5.19958,6.00717,-5.2356,0.23999,-7.94165,1.05945,-7.87134,3.3999,-6.36609,4.11072,-8.86548],"curve":[0.25,0,0.75,1]},{"time":2,"offset":18,"vertices":[-2.93945,4.18542,-3.68469,6.63464,-4.33362,6.22998,3.3446,-1.96661,2.91406,-1.17493,3.2041,-1.70782,4.87378,-2.46887,4.18335,-3.51044,9.84131,-1.40076,7.96265,-5.95056,9.84131,-1.40076,7.96265,-5.95056,9.84131,-1.40076,0,0,0,0,0,0,-2.57397,2.90198,-1.85083,3.41077,8.63916,-0.96899,7.11658,-4.995,-3.45154,3.77478,-2.50537,4.45947,-2.93945,4.18542,-4.8396,1.65552,-2.01831,4.69977,-2.93945,4.18542,-2.93945,4.18542,-2.01831,4.69977]}]},"Layer 79":{"armorgirl/Layer 79":[{"time":0,"offset":56,"vertices":[-1.03455,-4.40198,-1.03455,-4.40198,-1.03455,-4.40198]},{"time":1,"vertices":[0.82739,11.59537,0.82739,11.59537,-3.74939,11.00421,0.82739,11.59537,-3.74939,11.00421,1.41028,11.5392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.82739,11.59537],"curve":[0.25,0,0.75,1]},{"time":2,"offset":56,"vertices":[-1.03455,-4.40198,-1.03455,-4.40198,-1.03455,-4.40198]}]},"Layer 80":{"armorgirl/Layer 80":[{"time":0,"offset":26,"vertices":[-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-2.1051,-6.12234,-2.1051,-6.12234,-2.1051,-6.12234],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-0.24207,-1.61124,-0.24207,-1.61124,-1.1134,-4.28638,-0.24207,-1.61124,2.68176,-1.22617,2.75098,-0.76883,-0.19458,-7.3981,-2.47888,-9.7507,-2.47888,-9.7507,-2.12219,-7.87625,-0.24207,-1.61124,-0.24207,-1.61124,-2.47888,-9.7507,1.29883,4.30716,1.29883,4.30716,1.29883,4.30716,1.29883,4.30716,1.29883,4.30716,0.52966,8.20407,0.52966,8.20407,0.52966,8.20407],"curve":[0.25,0,0.75,1]},{"time":2,"offset":26,"vertices":[-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-1.35303,-3.93594,-2.1051,-6.12234,-2.1051,-6.12234,-2.1051,-6.12234]}]},"Layer 81":{"armorgirl/Layer 81":[{"time":0,"vertices":[4.09375,-4.1033,1.23438,-1.4693,5.33032,3.03378,0,0,1.18311,3.42105,-1.06995,-3.1106,-3.24719,-2.36032,1.18311,3.42105],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[4.83154,-2.02789,0.00391,-4.15775,-4.0271,-10.1582,-8.56628,8.54283,-0.15527,-0.80658,-0.69958,6.71683,-2.45471,2.62537,-1.26978,-0.548],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[4.09375,-4.1033,1.23438,-1.4693,5.33032,3.03378,0,0,1.18311,3.42105,-1.06995,-3.1106,-3.24719,-2.36032,1.18311,3.42105]}]},"Layer 82":{"armorgirl/Layer 82":[{"time":0,"vertices":[1.58752,-0.54694,0,0,-3.60535,1.24271,3.60876,-1.24289,0,0,-1.5863,0.54684],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-4.25256,3.37286,3.17004,5.28662,3.05847,-5.40509,-5.52942,-3.74173,1.22205,5.83926,9.13806,-3.27637],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[1.58752,-0.54694,0,0,-3.60535,1.24271,3.60876,-1.24289,0,0,-1.5863,0.54684]}]},"Layer 84":{"armorgirl/Layer 84":[{"time":0,"offset":2,"vertices":[-2.80884,-1.54333,-2.80884,-1.54333],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-5.04944,-1.41095,-4.84277,-4.99054,-4.84277,-4.99054,-5.04944,-1.41095],"curve":[0.25,0,0.75,1]},{"time":2,"offset":2,"vertices":[-2.80884,-1.54333,-2.80884,-1.54333]}]},"Layer 85":{"armorgirl/Layer 85":[{"time":0,"vertices":[-4.2218,1.14743,-3.69116,1.00311,0.68433,-0.18628,3.85181,-1.04654,4.10022,-1.11401,1.54224,-0.41898,-1.18433,0.32214],"curve":[0.265,0,0.618,0.43]},{"time":1,"curve":[0.265,0,0.618,0.43]},{"time":1.3333,"vertices":[-1.21393,0.32993,-1.06135,0.28843,0.19677,-0.05356,1.10754,-0.30092,1.17897,-0.32032,0.44345,-0.12047,-0.34054,0.09263],"curve":[0.324,0.31,0.664,0.66]},{"time":1.5333,"vertices":[-9.74437,3.43615,-8.25202,3.06506,1.73025,0.56633,8.73751,-1.18932,9.01799,-1.26233,3.07113,0.22621,-3.11301,1.77308],"curve":[0.335,0.34,0.669,0.67]},{"time":1.6,"vertices":[-13.35193,3.535,-11.48853,3.04648,2.52954,-0.63559,12.55371,-3.26932,13.1958,-3.43781,4.94031,-1.26831,-3.77393,1.01968],"curve":[0.337,0.35,0.671,0.68]},{"time":1.6667,"curve":[0.351,0.4,0.689,0.75]},{"time":2,"vertices":[-4.2218,1.14743,-3.69116,1.00311,0.68433,-0.18628,3.85181,-1.04654,4.10022,-1.11401,1.54224,-0.41898,-1.18433,0.32214]}],"armorgirl/Layer 851":[{"time":2,"vertices":[2.40295,-0.82306,2.40295,-0.82306,2.40295,-0.82306,2.40295,-0.82306]}]},"Layer 87":{"armorgirl/Layer 87":[{"time":0},{"time":1,"vertices":[1.047,5.88205,0.63464,3.71307,0.14661,1.16293,-0.34485,-1.40128,-0.3241,-1.28522,0.20007,1.43848]},{"time":1.3333,"vertices":[0.698,3.92137,0.4231,2.47538,0.09774,0.77529,-0.2299,-0.93418,-0.21606,-0.85681,0.13338,0.95898]},{"time":1.5333,"vertices":[-4.83379,5.11816,3.79458,1.95741,3.63104,0.75272,-0.36735,0.47342,-6.84705,2.10806,-11.73573,4.62881]},{"time":1.6,"vertices":[-8.46008,2.27957,6.72546,-1.70844,7.00732,-1.78348,0.75586,-0.1409,-10.31897,2.76761,-19.2511,5.11359]},{"time":1.6667}],"armorgirl/Layer 871":[{"time":2,"vertices":[1.43896,-0.49323,1.43896,-0.49323,1.43896,-0.49323,1.43896,-0.49323]}]},"Layer 89":{"armorgirl/Layer 89":[{"time":0,"vertices":[1.31335,-2.40079,0.99915,-2.88107,0.82056,-3.55511,-0.48572,-3.51746,-4.0304,-2.41202,-2.79041,-1.78247,-1.94958,-1.59906,-1.48584,-0.96976,0.71423,-1.24243,1.98047,-1.3963,-0.05371,-4.18912,-0.43274,-4.39734,2.82068,-0.61111,-1.55981,0.54385,-2.00146,0.70435],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-1.11499,-0.31525,-1.65076,3.28238,-3.10889,4.38327,4.98486,5.83183,3.02112,0.86906,-1.09534,-2.40985,-1.09363,-2.69685,0.80762,-2.13831,0.48584,1.34595,-0.04236,-1.48828,-0.91638,1.07741,1.67419,1.72639,0.16577,4.69128,4.3562,2.5573,2.81714,-1.01024],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[1.31335,-2.40079,0.99915,-2.88107,0.82056,-3.55511,-0.48572,-3.51746,-4.0304,-2.41202,-2.79041,-1.78247,-1.94958,-1.59906,-1.48584,-0.96976,0.71423,-1.24243,1.98047,-1.3963,-0.05371,-4.18912,-0.43274,-4.39734,2.82068,-0.61111,-1.55981,0.54385,-2.00146,0.70435]}]},"Layer 90":{"armorgirl/Layer 90":[{"time":0,"vertices":[7.87048,-21.66766,7.87048,-21.66766,0,0,0,0,0,0,0,0,0,0,0,0,8.42627,-5.785,0,0,0,0,6.91589,-4.33096]},{"time":1,"offset":8,"vertices":[34.19336,10.81219,-4.46875,-0.27295,-7.2561,19.36102,-1.31445,25.79865,-6.38818,30.99286,-10.10901,28.03033,-4.80554,22.41528,-5.29773,24.18353,-17.28381,-6.60376],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[7.87048,-21.66766,7.87048,-21.66766,0,0,0,0,0,0,0,0,0,0,0,0,8.42627,-5.785,0,0,0,0,6.91589,-4.33096]}]},"Layer 91":{"armorgirl/Layer 91":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":1.1667,"offset":2,"vertices":[-0.82373,3.8219,-0.82373,3.8219],"curve":[0.25,0,0.75,1]},{"time":2}]},"Layer 92":{"armorgirl/Layer 92":[{"time":0,"offset":2,"vertices":[3.26941,-10.52374,-12.76721,-27.62097,-3.24017,-30.4303,-9.46222,-36.40253,-0.78741,-38.32324,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-5.54779,-15.57068,0,0,-2.41675,9.63489,-2.41675,9.63489,-5.97211,6.22205,1.06738,9.56323,4.33691,-0.96045,0.63879,-11.34106,-6.47253,-18.16595,-15.92865,-11.87256,-13.08301,-0.60266,4.1225,-11.41223,6.04346,-2.7381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,2.77356,7.78546,2.45215,-7.89264],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-1.72052,15.68317,5.23969,8.70471,13.08917,14.79211,13.08746,11.30615,13.93756,-1.76147,0,0,-6.15771,-46.16571,15.70795,15.65796,15.70795,15.65796,14.86047,32.21136,18.33105,21.7522,5.25763,19.1571,0,0,0,0,0,0,0,0,-3.50854,-19.16266,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,9.61023,16.5379,-2.62567,-9.5799,0,0,-6.13422,-28.74255,-3.50854,-19.16266,-3.50854,-19.16266,-3.50854,-19.16266,-3.50854,-19.16266,-0.03638,-27.8783,-0.88385,-11.32489,11.31897,-7.85706,0.87799,2.61121],"curve":[0.25,0,0.75,1]},{"time":2,"offset":2,"vertices":[3.26941,-10.52374,-12.76721,-27.62097,-3.24017,-30.4303,-9.46222,-36.40253,-0.78741,-38.32324,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,-5.54779,-15.57068,0,0,-2.41675,9.63489,-2.41675,9.63489,-5.97211,6.22205,1.06738,9.56323,4.33691,-0.96045,0.63879,-11.34106,-6.47253,-18.16595,-15.92865,-11.87256,-13.08301,-0.60266,4.1225,-11.41223,6.04346,-2.7381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.84222,-17.34766,-3.84222,-17.34766,-3.84222,-17.34766,2.77356,7.78546,2.45215,-7.89264]}]},"Layer 93":{"armorgirl/Layer 93":[{"time":0,"vertices":[-17.08643,17.83679,-17.44031,0.94272,-15.75977,7.53522,-18.79791,-5.59998,-17.65155,-8.5495,0,0,0,0,0,0,0,0,0,0,6.07556,-17.28943,3.21625,-18.04211,6.07556,-17.28943,9.86487,-15.44278,3.21625,-18.04211,9.86487,-15.44278,0,0,0,0,-13.87073,36.55914],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-1.54285,3.0965,-1.54285,3.0965,-0.24292,3.45148,-0.24292,3.45148,-0.79468,3.36737,0,0,0,0,0,0,5.01355,50.50629,5.53351,46.74243,4.51846,44.21106,-25.87366,47.40244,-7.69287,53.45935,-31.02869,33.12824,-16.86865,42.95499,-19.50977,34.06631,-23.2821,22.06332,0,0,-1.54285,3.0965],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-17.08643,17.83679,-17.44031,0.94272,-15.75977,7.53522,-18.79791,-5.59998,-17.65155,-8.5495,0,0,0,0,0,0,0,0,0,0,6.07556,-17.28943,3.21625,-18.04211,6.07556,-17.28943,9.86487,-15.44278,3.21625,-18.04211,9.86487,-15.44278,0,0,0,0,-13.87073,36.55914]}]},"Layer 95":{"armorgirl/Layer 95":[{"time":0,"offset":2,"vertices":[-2.20093,7.36334,0,0,0.4751,9.22502,0,0,0,0,0.19385,-8.08569,20.05164,7.22263,0,0,0,0,-5.24707,20.99931]},{"time":1,"vertices":[5.84143,-4.99448,-1.02881,-5.02814,0,0,0.03516,-6.87354,0,0,0,0,0,0,0,0,0,0,0,0,-12.10242,-11.42709],"curve":[0.25,0,0.75,1]},{"time":2,"offset":2,"vertices":[-2.20093,7.36334,0,0,0.4751,9.22502,0,0,0,0,0.19385,-8.08569,20.05164,7.22263,0,0,0,0,-5.24707,20.99931]}]},"Layer 96":{"armorgirl/Layer 96":[{"time":0,"offset":32,"vertices":[-1.41736,10.06183,-5.22101,8.72192,11.91235,8.45697,9.71686,9.47461,6.15869,0.32886],"curve":[0.25,0,0.75,1]},{"time":1,"offset":32,"vertices":[4.78369,-0.02136,4.40125,0.60919,19.20886,2.99268,18.55035,6.04303,4.35742,-4.06567],"curve":[0.25,0,0.75,1]},{"time":2,"offset":32,"vertices":[-1.41736,10.06183,-5.22101,8.72192,11.91235,8.45697,9.71686,9.47461,6.15869,0.32886]}]},"Layer 97":{"armorgirl/Layer 97":[{"time":0,"vertices":[0.70984,13.0715,2.43091,6.34015,0,0,6.50903,2.69073,6.50903,2.69073,0,0,-0.89038,2.67896,0,0,0,0,-5.23596,-0.1543,-5.23596,-0.1543,-4.2843,0.16144,0,0,1.40649,8.60376,4.99866,12.28091,2.00537,10.66757,3.62451,11.71497,3.62451,11.71497,-1.13965,8.54675,0.45618,11.4032],"curve":[0.25,0,0.625,0.5]},{"time":0.5,"vertices":[6.79981,13.13206,6.02008,5.08713,4.36621,-0.38864,5.40118,1.5943,5.59894,2.62994,1.97125,2.01666,2.61188,4.02832,1.1748,9.44013,-3.18127,2.5719,-5.90668,3.41794,-1.36572,6.75617,-0.71191,5.52106,4.28693,-1.4129,9.22315,3.56885,10.2594,12.43355,7.81506,11.16905,3.93719,3.40774,5.05115,2.2698,3.29877,2.34589,4.93494,5.26831],"curve":[0.375,0.5,0.75,1]},{"time":1,"vertices":[12.33923,3.13519,9.60925,3.83411,8.73242,-0.77728,4.29333,0.49786,4.68884,2.56915,3.9425,4.03333,6.11414,5.37769,2.34961,18.88025,-6.36255,5.1438,-6.57739,6.99017,2.50452,13.66663,2.86047,10.88068,8.57385,-2.82581,17.03979,-1.46606,14.9696,2.52875,13.07422,1.6131,4.24988,-4.89948,6.47778,-7.17535,7.73718,-3.85498,9.4137,-0.86658],"curve":[0.265,0,0.618,0.43]},{"time":1.3333,"vertices":[12.73716,1.33883,7.57209,4.5453,6.25423,-0.5567,4.92213,1.12018,5.2054,2.60366,2.82365,2.8887,4.12631,4.61181,1.68281,13.52218,-4.55691,3.68403,-6.1967,4.96263,0.30783,9.74436,0.83284,7.83864,6.14066,-2.02386,12.60319,1.39167,15.83818,0.68012,13.63122,-0.43353,4.0724,-0.18443,5.66805,-1.81443,5.21801,-0.33547,6.87162,2.61549],"curve":[0.351,0.4,0.757,1]},{"time":2,"vertices":[0.70984,13.0715,2.43091,6.34015,0,0,6.50903,2.69073,6.50903,2.69073,0,0,-0.89038,2.67896,0,0,0,0,-5.23596,-0.1543,-5.23596,-0.1543,-4.2843,0.16144,0,0,1.40649,8.60376,4.99866,12.28091,2.00537,10.66757,3.62451,11.71497,3.62451,11.71497,-1.13965,8.54675,0.45618,11.4032]}]},"Layer 98":{"armorgirl/Layer 98":[{"time":0,"vertices":[-1.84924,-2.18587,-1.47546,-5.76346,-0.72681,-4.40121,1.2135,1.61116,2.401,0.70674,3.39355,-0.08669,3.2085,-2.48309,1.02966,-4.33575,-0.99316,-4.01889,-7.21887,-12.41206,-4.08496,-13.82387,-0.07178,-3.8513],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[0.51135,4.08198,0.51135,4.08198,0.51135,4.08198,0.51135,4.08198,0.22656,5.3266,-3.39941,-4.22554,-2.79065,-7.0121,-1.48523,-0.09284,0.51135,4.08198,2.14075,9.4593,2.14075,9.4593,2.14075,9.4593],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-1.84924,-2.18587,-1.47546,-5.76346,-0.72681,-4.40121,1.2135,1.61116,2.401,0.70674,3.39355,-0.08669,3.2085,-2.48309,1.02966,-4.33575,-0.99316,-4.01889,-7.21887,-12.41206,-4.08496,-13.82387,-0.07178,-3.8513]}]},"Layer 99":{"armorgirl/Layer 99":[{"time":0,"vertices":[2.70715,11.61392,0.05139,-4.56466,3.32068,-5.44821,2.72522,-8.01669,3.01392,-13.68071,0.05017,-9.01424,-9.28894,-8.63058,-8.60657,-4.29332,-5.38452,-3.20529,-5.35327,0.5415,0,0,0.75769,5.00967,0.73779,13.19795,2.18347,13.22168,2.62354,13.22887,2.14124,11.60465,-0.06042,4.9797,2.19507,3.74437,0.28589,1.67167,0,0,-4.34705,-2.65556],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[0.84814,-2.1196,5.56384,-25.89612,4.32031,-18.00247,4.93054,-26.13318,1.18164,-12.78488,2.68079,-15.97049,4.40149,-4.29526,3.08545,-26.94977,6.74255,-21.86777,-0.74463,-18.53284,2.45129,-24.89792,1.26355,-4.61987,4.39978,-2.84619,-0.0863,-3.26794,-1.45117,-3.39606,2.54871,-9.79825,8.64172,-39.53772,7.19287,-36.60669,8.30713,-37.8255,10.17517,-33.47049,8.79639,-37.69809],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[2.70715,11.61392,0.05139,-4.56466,3.32068,-5.44821,2.72522,-8.01669,3.01392,-13.68071,0.05017,-9.01424,-9.28894,-8.63058,-8.60657,-4.29332,-5.38452,-3.20529,-5.35327,0.5415,0,0,0.75769,5.00967,0.73779,13.19795,2.18347,13.22168,2.62354,13.22887,2.14124,11.60465,-0.06042,4.9797,2.19507,3.74437,0.28589,1.67167,0,0,-4.34705,-2.65556]}]},"Layer 100":{"armorgirl/Layer 100":[{"time":0,"vertices":[-1.14221,4.62622,-0.49792,-4.73949,-0.05847,4.76544,-1.14221,4.62622,-0.49792,-4.73949,-0.53162,1.4037,-0.83777,1.24498,0.00391,-1.38171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.28381,2.01744,-0.18335,2.02892],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[4.2926,-14.26276,-1.08887,14.8541,3.21448,-14.54388,4.2926,-14.26276,-1.08887,14.8541,1.29138,-5.81842,1.724,-5.70538,-0.43884,5.94265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.49707,4.10028,-0.80237,4.05182,-0.49707,4.10028,0,0,2.57825,9.33769,0,0,0,0,0,0,0,0,0,0,7.80176,-26.59283,9.76001,-25.93585,5.90857,-20.13928,7.39185,-19.64172,4.58105,-15.62274,5.72803,-15.23718],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-1.14221,4.62622,-0.49792,-4.73949,-0.05847,4.76544,-1.14221,4.62622,-0.49792,-4.73949,-0.53162,1.4037,-0.83777,1.24498,0.00391,-1.38171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.28381,2.01744,-0.18335,2.02892]}]},"Layer 101":{"armorgirl/Layer 101":[{"time":0,"vertices":[-1.88755,-7.17242,5.41085,3.39538,10.02428,0.87464,2.72614,-9.69337],"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"vertices":[-0.71329,-6.99365,6.01776,-0.94604,8.96964,-3.42505,2.23889,-9.4729],"curve":[0.25,0,0.75,1]},{"time":1.1667,"vertices":[-12.8876,-8.84705,-0.27444,44.06433,19.90384,41.15259,7.29056,-11.75867],"curve":[0.243,0,0.689,0.75]},{"time":2,"vertices":[-1.88755,-7.17242,5.41085,3.39538,10.02428,0.87464,2.72614,-9.69337]}]},"Layer 102":{"armorgirl/Layer 102":[{"time":0,"vertices":[-3.12976,-21.21134,1.54129,-19.01225,10.7272,-13.23832,0.94891,-13.01342,4.44356,-12.52895,-3.87063,-6.18132,-0.25288,-5.91009,0.31308,-5.10356,-0.86575,-1.06442,1.37398,-0.55499,3.62632,-1.74516,5.12688,-5.5229,4.62224,-5.90524,9.96837,-12.13208,5.7872,-12.48622,6.08283,-14.90755,0.89944,-17.99352,5.73581,-15.69673,5.66087,-19.16017],"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"vertices":[-0.04485,-20.85462,6.01035,-19.82666,16.06283,-15.67631,5.39088,-16.17545,10.00485,-16.19399,-2.62018,-9.32324,2.71241,-10.27442,3.20384,-9.56818,-0.36829,-5.24854,1.00225,-4.93849,3.05761,-5.97665,6.98775,-9.79841,6.53571,-10.17078,14.32968,-15.76968,9.17458,-15.66288,9.23569,-16.51039,2.88654,-18.12733,5.10873,-16.58923,5.12091,-19.30688],"curve":[0.25,0,0.75,1]},{"time":1.1667,"vertices":[-32.02811,-24.55298,-40.32321,-11.38318,-39.25513,9.59985,-40.6619,16.60742,-47.65256,21.80383,-15.58441,23.2511,-28.03064,34.97339,-26.7666,36.71948,-5.52579,38.13086,4.85626,40.50806,8.95383,37.89392,-12.30505,34.52856,-13.30243,34.05286,-30.88681,21.9436,-25.94449,17.27161,-23.45212,0.1073,-17.71509,-16.73999,11.61008,-7.33606,10.71899,-17.78577],"curve":[0.243,0,0.689,0.75]},{"time":2,"vertices":[-3.12976,-21.21134,1.54129,-19.01225,10.7272,-13.23832,0.94891,-13.01342,4.44356,-12.52895,-3.87063,-6.18132,-0.25288,-5.91009,0.31308,-5.10356,-0.86575,-1.06442,1.37398,-0.55499,3.62632,-1.74516,5.12688,-5.5229,4.62224,-5.90524,9.96837,-12.13208,5.7872,-12.48622,6.08283,-14.90755,0.89944,-17.99352,5.73581,-15.69673,5.66087,-19.16017]}]},"Layer 103":{"armorgirl/Layer 103":[{"time":0,"offset":10,"vertices":[0.01409,-0.19739,4.1E-4,-0.19789,-15.81916,-9.57295,-6.42688,-17.30358,-1.81556,3.888,0.11003,0.50965,-0.03073,0.40136,-0.38939,-3.7471,0,0,0,0,0,0,0,0,0,0,0,0,-2.35892,7.21242,-2.57292,13.24267,-1.91208,13.35532,-0.87032,14.90671,-0.1307,14.93706,-0.176,0.30834,-0.15471,0.31957,-0.63204,-2.408,0,0,0,0,-16.72915,-12.03708,-6.54858,-7.74494,-1.3285,-10.06323,-0.97167,-10.43427,-1.23461,-10.44172,-1.71195,-10.37123,-0.40111,-2.3524,-1.10331,-9.16854,-1.52996,-9.10412,-0.54021,-15.90202,-0.92605,-15.91724,0.20792,0.43558,-1.57523,-9.90991,-10.76629,-22.07689,-1.57523,-9.90991,-1.06207,-9.91787,-1.15555,-9.91347],"curve":[0.36,0.64,0.695,1]},{"time":0.1,"offset":14,"vertices":[-16.21967,-10.36133,-6.2583,-18.2003,-2.42755,3.16901,0,0,0,0,-1.0929,-5.08179,0,0,0,0,0,0,0,0,0,0,0,0,-2.43127,7.58847,-2.65479,13.88673,-1.96057,14.00201,-0.63489,15.76901,0.15076,15.78133,0,0,0,0,-0.3678,-3.2045,0,0,0,0,-18.39331,-13.133,-7.29102,-9.04938,-1.21704,-11.55754,-1.21704,-11.55754,-1.21704,-11.55754,-1.75977,-11.48749,-0.3678,-3.2045,-1.02979,-9.7794,-1.48926,-9.72012,-0.61829,-17.52409,-1.08325,-17.53421,0,0,-1.99213,-11.02197,-12.20874,-23.46332,-1.99213,-11.02197,-1.0592,-11.68372,-1.24792,-11.67952],"curve":[0.25,0,0.75,1]},{"time":1.1,"offset":10,"vertices":[0.33105,-4.63866,0.00964,-4.65042,-6.80774,8.16565,-10.21997,2.87266,11.95435,20.06531,2.58569,11.97693,-0.72217,9.43201,15.43958,26.28357,0,0,0,0,0,0,0,0,0,0,0,0,-0.73096,-1.2487,-0.73096,-1.2487,-0.82092,-1.19533,-6.1676,-4.49509,-6.4635,-4.05895,-4.13599,7.24608,-3.63574,7.50988,-6.57739,15.51336,0,0,0,0,20.71448,12.62109,10.15625,21.60498,-3.8363,23.55886,4.54919,14.83947,-1.63,14.66432,-0.63599,14.74467,-1.15063,16.81991,-2.75757,4.57591,-2.4458,4.75608,1.21655,20.5947,2.61096,20.46465,4.88611,10.23608,7.80505,15.11157,21.68896,9.1178,7.80505,15.11157,-1.12646,29.81387,0.92297,29.82281],"curve":[0.245,0,0.711,0.83]},{"time":2,"offset":10,"vertices":[0.01409,-0.19739,4.1E-4,-0.19789,-15.81916,-9.57295,-6.42688,-17.30358,-1.81556,3.888,0.11003,0.50965,-0.03073,0.40136,-0.38939,-3.7471,0,0,0,0,0,0,0,0,0,0,0,0,-2.35892,7.21242,-2.57292,13.24267,-1.91208,13.35532,-0.87032,14.90671,-0.1307,14.93706,-0.176,0.30834,-0.15471,0.31957,-0.63204,-2.408,0,0,0,0,-16.72915,-12.03708,-6.54858,-7.74494,-1.3285,-10.06323,-0.97167,-10.43427,-1.23461,-10.44172,-1.71195,-10.37123,-0.40111,-2.3524,-1.10331,-9.16854,-1.52996,-9.10412,-0.54021,-15.90202,-0.92605,-15.91724,0.20792,0.43558,-1.57523,-9.90991,-10.76629,-22.07689,-1.57523,-9.90991,-1.06207,-9.91787,-1.15555,-9.91347]}]},"Layer 104":{"armorgirl/Layer 104":[{"time":0,"vertices":[7.47284,-0.6832,0,0,0,0,10.16467,10.33051],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[18.98413,1.14193,0,0,0,0,8.6059,-5.97668],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[7.47284,-0.6832,0,0,0,0,10.16467,10.33051]}]},"Layer 106":{"armorgirl/Layer 106":[{"time":0,"offset":24,"vertices":[0.06367,5.45385,0.06367,5.45385],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-1.29384,-9.245,-1.73807,-3.83939,0,0,0,0,0,0,0.35355,-3.05191,3.21686,8.58423,3.62428,21.22089,1.58231,6.54297,0,0,0,0,-1.29384,-9.245,-0.13751,-21.57291,0.05182,-10.12809],"curve":[0.25,0,0.75,1]},{"time":2,"offset":24,"vertices":[0.06367,5.45385,0.06367,5.45385]}]},"Layer 107":{"armorgirl/Layer 107":[{"time":0,"offset":2,"vertices":[13.2439,10.1302],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-5.55872,-67.22736,15.36835,-26.97781,0,0,0,0,0,0,0,0,0.50891,9.70392,-2.0097,12.85526,6.30432,5.03879,-5.25482,-61.53253,-13.28796,-62.14835,-12.76929,-5.36066],"curve":[0.25,0,0.75,1]},{"time":2,"offset":2,"vertices":[13.2439,10.1302]}]},"Layer 108":{"armorgirl/Layer 108":[{"time":0,"vertices":[-7.51208,-12.936,-7.51208,-12.936,0,0,4.18115,-0.03024,5.27734,2.29135,0,0,-13.7887,-3.22055,0,0,0,0,0,0,0,0,9.26294,22.13297,9.26294,22.13297,-1.49268,3.41284,-0.34814,13.90562,-0.34814,13.90562],"curve":[0.25,0,0.75,1]},{"time":1.0667,"offset":8,"vertices":[-5.56116,-18.24615,0,0,-1.3501,-15.28748,0.36365,-7.81293,-0.41431,-6.54718,0,0,0,0,7.64087,-19.99817,15.9696,-40.45575,11.78027,-39.30389,-0.06921,-8.80505,-0.06921,-8.80505],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-7.51208,-12.936,-7.51208,-12.936,0,0,4.18115,-0.03024,5.27734,2.29135,0,0,-13.7887,-3.22055,0,0,0,0,0,0,0,0,9.26294,22.13297,9.26294,22.13297,-1.49268,3.41284,-0.34814,13.90562,-0.34814,13.90562]}]},"Layer 109":{"armorgirl/Layer 109":[{"time":0,"vertices":[-10.21877,-11.80231,-10.21877,-11.80231,0.67503,-14.19985,0,0,0,0,0,0,-1.4445,-6.03813],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-11.5236,-6.34206,-15.09221,-5.61114,-12.61243,7.87494,0,0,2.12842,-5.64944,2.43246,-6.45648,-6.74361,-7.7583,2.12842,-5.64944],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-10.21877,-11.80231,-10.21877,-11.80231,0.67503,-14.19985,0,0,0,0,0,0,-1.4445,-6.03813]}]},"Layer 110":{"armorgirl/Layer 110":[{"time":0,"vertices":[1.13498,-5.63477,-1.4445,6.17001,0.09618,-0.41357,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.44011,-23.38835,-1.09577,-7.04294],"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"vertices":[1.13498,-5.63477,-1.71986,7.43018,-0.01471,0.1438,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,2.45309,-27.70544,-0.47818,-8.66541],"curve":[0.25,0,0.75,1]},{"time":1.1667,"vertices":[1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,-8.04921,17.05267,-6.88112,8.1557],"curve":[0.243,0,0.689,0.75]},{"time":2,"vertices":[1.13498,-5.63477,-1.4445,6.17001,0.09618,-0.41357,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.13498,-5.63477,1.44011,-23.38835,-1.09577,-7.04294]}]},"Layer 111":{"armorgirl/Layer 111":[{"time":0,"offset":4,"vertices":[-11.79842,20.69805,7.42817,19.06477,0.85051,-4.2801,-4.32673,6.4247,-5.68114,18.74713,18.6397,1.83926,-1.40728,-0.21538,0,0,-2.97319,2.51177,11.2817,19.73483,-0.97091,10.43307,3.87375,22.98028,10.96129,15.89066],"curve":[0.371,0.62,0.71,1]},{"time":0.1667,"offset":4,"vertices":[-13.23212,22.42358,4.48627,23.42554,0.15491,-4.31384,-5.57501,7.53369,-6.34882,20.1524,18.85571,2.86603,0,0,0,0,-2.71021,4.30652,7.08997,27.16479,-1.69153,15.33264,1.53003,29.73071,13.49554,20.73767],"curve":[0.25,0,0.75,1]},{"time":1.1667,"offset":4,"vertices":[1.63196,4.53381,17.40375,-8.00879,2.37256,-15.49951,7.3667,-3.96399,0.57336,5.58301,16.61615,-7.77917,-14.59015,-2.23303,0,0,-5.43677,-14.30078,32.96533,-36.08984,5.7796,-35.46436,25.82892,-40.25537,-12.77869,-29.5144],"curve":[0.243,0,0.689,0.75]},{"time":2,"offset":4,"vertices":[-11.79842,20.69805,7.42817,19.06477,0.85051,-4.2801,-4.32673,6.4247,-5.68114,18.74713,18.6397,1.83926,-1.40728,-0.21538,0,0,-2.97319,2.51177,11.2817,19.73483,-0.97091,10.43307,3.87375,22.98028,10.96129,15.89066]}]},"Layer 112":{"armorgirl/Layer 112":[{"time":0,"offset":10,"vertices":[8.88162,22.30607,10.82546,-4.13117,10.73243,-4.21381,14.67852,9.23738,14.76361,9.19122,16.0312,6.26175,16.03469,4.72074],"curve":[0.375,0.62,0.716,1]},{"time":0.2,"offset":10,"vertices":[12.38208,7.52782,11.05969,-2.70886,11.05005,-2.73853,13.89075,9.36933,14.80347,9.27279,16.22339,4.48962,16.27905,1.94064],"curve":[0.25,0,0.75,1]},{"time":1.1,"offset":10,"vertices":[5.67529,-47.19677,10.39844,-24.8255,9.09558,-25.3097,5.23145,-10.89838,5.07715,-11.00891,1.07874,-15.80507,0.63708,-10.25294],"curve":[0.312,0,0.646,0.35]},{"time":1.5,"offset":10,"vertices":[9.95734,4.37187,12.7759,-2.67162,12.02149,-2.92232,6.22082,-1.98064,6.59496,-2.03723,2.42559,4.75676,2.10448,8.38821],"curve":[0.324,0.3,0.697,0.76]},{"time":2,"offset":10,"vertices":[8.88162,22.30607,10.82546,-4.13117,10.73243,-4.21381,14.67852,9.23738,14.76361,9.19122,16.0312,6.26175,16.03469,4.72074]}]},"Layer 113":{"armorgirl/Layer 113":[{"time":0,"vertices":[-6.03174,1.47269,-6.03174,1.47269,-6.03174,1.47269,-6.03174,1.47269],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[8.62549,-41.93164,-0.17786,-11.93704,1.97461,-19.26819,10.77844,-49.26276],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[-6.03174,1.47269,-6.03174,1.47269,-6.03174,1.47269,-6.03174,1.47269]}]},"Layer 114":{"armorgirl/Layer 114":[{"time":0,"vertices":[0.12415,6.29599,0.12415,6.29599,0.12415,6.29599,0.12415,6.29599],"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[14.5946,-14.75256,-4.95886,17.9071,-1.67004,12.41357,17.88416,-20.24579],"curve":[0.25,0,0.75,1]},{"time":2,"vertices":[0.12415,6.29599,0.12415,6.29599,0.12415,6.29599,0.12415,6.29599]}]},"Layer 115":{"armorgirl/Layer 115":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":1,"vertices":[-0.64148,21.57399,0.73889,-24.80219,0.64148,-21.57408,-0.73584,24.80207],"curve":[0.25,0,0.75,1]},{"time":2}]}}}}}},"dragon":{"skeleton":{"hash":"mIeGEXAIALmreqr+j5JEAUyMvUM","spine":"3.6.39","width":660.39,"height":499.7},"bones":[{"name":"root","y":-176.12},{"name":"COG","parent":"root","y":176.12},{"name":"chest","parent":"COG","length":31.24,"rotation":161.7,"x":52.53,"y":15.35},{"name":"L_front_thigh","parent":"chest","length":67.42,"rotation":138.94,"x":-45.59,"y":7.93},{"name":"L_front_leg","parent":"L_front_thigh","length":51.58,"rotation":43.36,"x":67.42,"y":0.03},{"name":"L_front_toe1","parent":"L_front_leg","length":51.45,"rotation":-98.01,"x":45.54,"y":2.43},{"name":"L_front_toe2","parent":"L_front_leg","length":61.98,"rotation":-55.26,"x":51.58,"y":-0.13},{"name":"L_front_toe3","parent":"L_front_leg","length":45.65,"rotation":-11.14,"x":54.19,"y":0.6,"scaleX":1.135},{"name":"L_front_toe4","parent":"L_front_leg","length":53.47,"rotation":19.43,"x":50.61,"y":7.09,"scaleX":1.135},{"name":"back","parent":"COG","length":115.38,"rotation":151.83,"x":16.04,"y":27.94},{"name":"R_rear_thigh","parent":"back","length":123.47,"rotation":104.88,"x":65.31,"y":59.89},{"name":"L_rear_thigh","parent":"R_rear_thigh","length":88.06,"rotation":28.35,"x":-8.59,"y":30.19},{"name":"L_rear_leg","parent":"L_rear_thigh","length":103.74,"rotation":-122.41,"x":96.04,"y":-0.97},{"name":"L_wing","parent":"chest","length":301.12,"rotation":-75.51,"x":-7.25,"y":-24.66},{"name":"R_front_thigh","parent":"chest","length":81.64,"rotation":67.97,"x":-10.89,"y":28.25},{"name":"R_front_leg","parent":"R_front_thigh","length":66.53,"rotation":92.7,"x":83.05,"y":-0.31},{"name":"R_front_toe1","parent":"R_front_leg","length":46.66,"rotation":8.59,"x":70.03,"y":5.31},{"name":"R_front_toe2","parent":"R_front_leg","length":53.67,"rotation":-35.02,"x":66.53,"y":0.34},{"name":"R_front_toe3","parent":"R_front_leg","length":58.39,"rotation":-74.67,"x":62.1,"y":-0.79},{"name":"R_rear_leg","parent":"R_rear_thigh","length":91.06,"rotation":-129.04,"x":123.47,"y":-0.27},{"name":"R_rear_toe1","parent":"R_rear_leg","length":95,"rotation":141.98,"x":90.07,"y":2.12},{"name":"R_rear_toe2","parent":"R_rear_leg","length":99.29,"rotation":125.32,"x":89.6,"y":1.52},{"name":"R_rear_toe3","parent":"R_rear_leg","length":103.46,"rotation":112.27,"x":91.06,"y":-0.35},{"name":"neck","parent":"COG","length":41.37,"rotation":39.06,"x":64.76,"y":11.98},{"name":"head","parent":"neck","length":188.84,"rotation":8.07,"x":69.96,"y":2.5},{"name":"R_wing","parent":"head","length":359.5,"rotation":83.21,"x":-74.68,"y":20.91},{"name":"chin","parent":"neck","length":153.16,"rotation":-69.07,"x":64.63,"y":-6.99},{"name":"tail1","parent":"back","length":65.65,"rotation":44.32,"x":115.38,"y":-0.2},{"name":"tail2","parent":"tail1","length":54.5,"rotation":12,"x":65.65,"y":0.23},{"name":"tail3","parent":"tail2","length":41.78,"rotation":1.8,"x":54.5,"y":0.37},{"name":"tail4","parent":"tail3","length":34.19,"rotation":-1.8,"x":41.78,"y":0.16},{"name":"tail5","parent":"tail4","length":32.33,"rotation":-3.15,"x":34.19,"y":-0.19},{"name":"tail6","parent":"tail5","length":80.08,"rotation":-29.55,"x":32.33,"y":-0.23}],"slots":[{"name":"L_rear_leg","bone":"L_rear_leg","attachment":"dragon/L_rear_leg"},{"name":"L_rear_thigh","bone":"L_rear_thigh","attachment":"dragon/L_rear_thigh"},{"name":"L_wing","bone":"L_wing","attachment":"dragon/L_wing01"},{"name":"tail6","bone":"tail6","attachment":"dragon/tail06"},{"name":"tail5","bone":"tail5","attachment":"dragon/tail05"},{"name":"tail4","bone":"tail4","attachment":"dragon/tail04"},{"name":"tail3","bone":"tail3","attachment":"dragon/tail03"},{"name":"tail2","bone":"tail2","attachment":"dragon/tail02"},{"name":"tail1","bone":"tail1","attachment":"dragon/tail01"},{"name":"back","bone":"back","attachment":"dragon/back"},{"name":"L_front_thigh","bone":"L_front_thigh","attachment":"dragon/L_front_thigh"},{"name":"L_front_leg","bone":"L_front_leg","attachment":"dragon/L_front_leg"},{"name":"L_front_toe1","bone":"L_front_toe1","attachment":"dragon/front_toeA"},{"name":"L_front_toe4","bone":"L_front_toe4","attachment":"dragon/front_toeB"},{"name":"L_front_toe3","bone":"L_front_toe3","attachment":"dragon/front_toeB"},{"name":"L_front_toe2","bone":"L_front_toe2","attachment":"dragon/front_toeB"},{"name":"chest","bone":"chest","attachment":"dragon/chest"},{"name":"R_rear_toe1","bone":"R_rear_toe1","attachment":"dragon/rear-toe"},{"name":"R_rear_toe2","bone":"R_rear_toe2","attachment":"dragon/rear-toe"},{"name":"R_rear_toe3","bone":"R_rear_toe3","attachment":"dragon/rear-toe"},{"name":"R_rear_leg","bone":"R_rear_leg","attachment":"dragon/R_rear_leg"},{"name":"R_rear_thigh","bone":"R_rear_thigh","attachment":"dragon/R_rear_thigh"},{"name":"R_front_toe1","bone":"R_front_toe1","attachment":"dragon/front_toeB"},{"name":"R_front_thigh","bone":"R_front_thigh","attachment":"dragon/R_front_thigh"},{"name":"R_front_leg","bone":"R_front_leg","attachment":"dragon/R_front_leg"},{"name":"R_front_toe2","bone":"R_front_toe2","attachment":"dragon/front_toeB"},{"name":"R_front_toe3","bone":"R_front_toe3","attachment":"dragon/front_toeB"},{"name":"chin","bone":"chin","attachment":"dragon/chin"},{"name":"R_wing","bone":"R_wing","attachment":"dragon/R_wing01"},{"name":"head","bone":"head","attachment":"dragon/head"}],"skins":{"default":{"L_front_leg":{"dragon/L_front_leg":{"x":14.69,"y":0.49,"rotation":16,"width":84,"height":57}},"L_front_thigh":{"dragon/L_front_thigh":{"x":27.66,"y":-11.59,"rotation":58.66,"width":84,"height":72}},"L_front_toe1":{"dragon/front_toeA":{"x":31.93,"y":0.61,"rotation":109.56,"width":29,"height":50}},"L_front_toe2":{"dragon/front_toeB":{"x":26.84,"y":-4.95,"rotation":109.51,"width":56,"height":57}},"L_front_toe3":{"dragon/front_toeB":{"x":18.22,"y":-7.22,"scaleX":0.881,"scaleY":0.941,"rotation":99.71,"width":56,"height":57}},"L_front_toe4":{"dragon/front_toeB":{"x":23.21,"y":-11.69,"scaleX":0.881,"rotation":79.89,"width":56,"height":57}},"L_rear_leg":{"dragon/L_rear_leg":{"x":67.29,"y":12.63,"rotation":-162.65,"width":206,"height":177}},"L_rear_thigh":{"dragon/L_rear_thigh":{"x":56.03,"y":27.39,"rotation":74.94,"width":91,"height":149}},"L_wing":{"dragon/L_wing01":{"x":129.21,"y":-45.49,"rotation":-83.7,"width":191,"height":256},"dragon/L_wing02":{"x":126.38,"y":-31.69,"rotation":-86.19,"width":179,"height":269},"dragon/L_wing03":{"x":110.27,"y":-90.89,"rotation":-86.19,"width":186,"height":207},"dragon/L_wing04":{"x":-61.62,"y":-83.27,"rotation":-86.19,"width":188,"height":135},"dragon/L_wing05":{"x":-90.02,"y":-78.14,"rotation":-86.19,"width":218,"height":213},"dragon/L_wing06":{"x":-143.77,"y":-83.72,"rotation":-86.19,"width":192,"height":331},"dragon/L_wing07":{"x":-133.05,"y":-33.9,"rotation":-86.19,"width":159,"height":255},"dragon/L_wing08":{"x":50.15,"y":-15.71,"rotation":-86.19,"width":164,"height":181},"dragon/L_wing09":{"x":85.94,"y":-11.33,"rotation":-86.19,"width":204,"height":167}},"R_front_leg":{"dragon/R_front_leg":{"x":17.8,"y":4.23,"rotation":37.63,"width":101,"height":89}},"R_front_thigh":{"dragon/R_front_thigh":{"x":35.29,"y":2.11,"rotation":130.33,"width":108,"height":108}},"R_front_toe1":{"dragon/front_toeB":{"x":24.5,"y":-2.61,"rotation":104.18,"width":56,"height":57}},"R_front_toe2":{"dragon/front_toeB":{"x":26.39,"y":1.17,"rotation":104.58,"width":56,"height":57}},"R_front_toe3":{"dragon/front_toeB":{"x":30.67,"y":-0.07,"rotation":112.3,"width":56,"height":57}},"R_rear_leg":{"dragon/R_rear_leg":{"x":60.88,"y":-5.73,"rotation":-127.67,"width":116,"height":100}},"R_rear_thigh":{"dragon/R_rear_thigh":{"x":53.25,"y":12.58,"rotation":103.29,"width":91,"height":149}},"R_rear_toe1":{"dragon/rear-toe":{"x":54.76,"y":-5.72,"rotation":134.79,"width":109,"height":77}},"R_rear_toe2":{"dragon/rear-toe":{"x":57.03,"y":-7.23,"rotation":134.43,"width":109,"height":77}},"R_rear_toe3":{"dragon/rear-toe":{"x":47.46,"y":-7.64,"rotation":134.34,"width":109,"height":77}},"R_wing":{"dragon/R_wing01":{"x":170.08,"y":-23.68,"rotation":-130.34,"width":219,"height":310},"dragon/R_wing02":{"x":171.15,"y":-19.33,"rotation":-130.34,"width":203,"height":305},"dragon/R_wing03":{"x":166.46,"y":29.24,"rotation":-130.34,"width":272,"height":247},"dragon/R_wing04":{"x":42.94,"y":134.06,"rotation":-130.34,"width":279,"height":144},"dragon/R_wing05":{"x":-8.84,"y":142.59,"rotation":-130.34,"width":251,"height":229},"dragon/R_wing06":{"x":-123.33,"y":111.22,"rotation":-130.34,"width":200,"height":366},"dragon/R_wing07":{"x":-40.17,"y":118.03,"rotation":-130.34,"width":200,"height":263},"dragon/R_wing08":{"x":48.02,"y":28.76,"rotation":-130.34,"width":234,"height":254},"dragon/R_wing09":{"x":128.1,"y":21.13,"rotation":-130.34,"width":248,"height":204}},"back":{"dragon/back":{"x":35.85,"y":19.99,"rotation":-151.83,"width":190,"height":185}},"chest":{"dragon/chest":{"x":-14.6,"y":24.79,"rotation":-161.7,"width":136,"height":122}},"chin":{"dragon/chin":{"x":66.55,"y":7.32,"rotation":30.01,"width":214,"height":146}},"head":{"dragon/head":{"x":76.69,"y":32.21,"rotation":-47.13,"width":296,"height":260}},"tail1":{"dragon/tail01":{"x":22.6,"y":-4.5,"rotation":163.85,"width":120,"height":153}},"tail2":{"dragon/tail02":{"x":18.12,"y":-1.75,"rotation":151.85,"width":95,"height":120}},"tail3":{"dragon/tail03":{"x":16.94,"y":-2.01,"rotation":150.04,"width":73,"height":92}},"tail4":{"dragon/tail04":{"x":15.35,"y":-2.18,"rotation":151.85,"width":56,"height":71}},"tail5":{"dragon/tail05":{"x":15.06,"y":-3.57,"rotation":155,"width":52,"height":59}},"tail6":{"dragon/tail06":{"x":28.02,"y":-16.83,"rotation":-175.45,"width":95,"height":68}}}},"animations":{"flying":{"slots":{"L_wing":{"attachment":[{"time":0,"name":"dragon/L_wing01"},{"time":0.0667,"name":"dragon/L_wing02"},{"time":0.1333,"name":"dragon/L_wing03"},{"time":0.2,"name":"dragon/L_wing04"},{"time":0.2667,"name":"dragon/L_wing05"},{"time":0.3333,"name":"dragon/L_wing06"},{"time":0.4,"name":"dragon/L_wing07"},{"time":0.4667,"name":"dragon/L_wing08"},{"time":0.5333,"name":"dragon/L_wing09"},{"time":0.6,"name":"dragon/L_wing01"},{"time":0.7333,"name":"dragon/L_wing02"},{"time":0.8,"name":"dragon/L_wing03"},{"time":0.8333,"name":"dragon/L_wing04"},{"time":0.8667,"name":"dragon/L_wing05"},{"time":0.9,"name":"dragon/L_wing06"},{"time":0.9333,"name":"dragon/L_wing07"},{"time":0.9667,"name":"dragon/L_wing08"},{"time":1,"name":"dragon/L_wing01"}]},"R_wing":{"attachment":[{"time":0,"name":"dragon/R_wing01"},{"time":0.0667,"name":"dragon/R_wing02"},{"time":0.1333,"name":"dragon/R_wing03"},{"time":0.2,"name":"dragon/R_wing04"},{"time":0.2667,"name":"dragon/R_wing05"},{"time":0.3333,"name":"dragon/R_wing06"},{"time":0.4,"name":"dragon/R_wing07"},{"time":0.4667,"name":"dragon/R_wing08"},{"time":0.5333,"name":"dragon/R_wing09"},{"time":0.6,"name":"dragon/R_wing01"},{"time":0.7333,"name":"dragon/R_wing02"},{"time":0.7667,"name":"dragon/R_wing02"},{"time":0.8,"name":"dragon/R_wing03"},{"time":0.8333,"name":"dragon/R_wing04"},{"time":0.8667,"name":"dragon/R_wing05"},{"time":0.9,"name":"dragon/R_wing06"},{"time":0.9333,"name":"dragon/R_wing07"},{"time":0.9667,"name":"dragon/R_wing08"},{"time":1,"name":"dragon/R_wing01"}]}},"bones":{"back":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.39},{"time":0.5,"angle":0},{"time":0.8333,"angle":7.01},{"time":1,"angle":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-8.18},{"time":0.3333,"angle":-23.16},{"time":0.5,"angle":-18.02},{"time":1,"angle":0}]},"tail1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.42},{"time":0.3333,"angle":-26.21},{"time":0.5,"angle":-29.66},{"time":0.6667,"angle":-23.15},{"time":0.8333,"angle":-55.46},{"time":1,"angle":0}]},"tail2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.13},{"time":0.3333,"angle":10.48},{"time":0.5,"angle":7.89},{"time":0.8333,"angle":-10.39},{"time":1,"angle":0}]},"tail3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":8.25},{"time":0.3333,"angle":15.21},{"time":0.5,"angle":14.85},{"time":0.8333,"angle":-18.91},{"time":1,"angle":0}]},"tail4":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.47},{"time":0.3333,"angle":22.15},{"time":0.5,"angle":22.76},{"time":0.8333,"angle":-4.37},{"time":1,"angle":0}]},"tail5":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.4},{"time":0.3333,"angle":28.51},{"time":0.5,"angle":21.33},{"time":0.8333,"angle":-1.28},{"time":1,"angle":0}]},"tail6":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":46},{"time":0.4,"angle":43.53},{"time":0.5,"angle":61.79},{"time":0.8333,"angle":13.28},{"time":1,"angle":0}]},"R_rear_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-14.22},{"time":0.5,"angle":47.18},{"time":1,"angle":0}]},"R_rear_toe3":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-36.06},{"time":1,"angle":0}]},"R_rear_toe2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-20.32},{"time":1,"angle":0}]},"R_rear_toe1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-18.71},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0,"curve":[0.408,1.37,0.675,1.43]},{"time":0.5,"angle":1.04},{"time":1,"angle":0}]},"chin":{"rotate":[{"time":0,"angle":0,"curve":[0.417,1.15,0.494,1.28]},{"time":0.3333,"angle":-5.15},{"time":0.5,"angle":9.8},{"time":0.6667,"angle":18.95},{"time":1,"angle":0}]},"L_front_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-19.19},{"time":0.3333,"angle":-32.02},{"time":0.5,"angle":-19.62},{"time":1,"angle":0}]},"R_front_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-12.96},{"time":0.5,"angle":16.2},{"time":1,"angle":0}]},"L_front_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":37.77},{"time":0.5,"angle":0}]},"L_front_toe1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-16.09},{"time":0.5,"angle":0}]},"L_front_toe2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.331,"y":1.029},{"time":1,"x":1,"y":1}]},"L_front_toe4":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":26.52},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.211,"y":0.993},{"time":1,"x":1,"y":1}]},"L_front_toe3":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":16.99},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.355,"y":1.008},{"time":1,"x":1,"y":1}]},"R_front_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":26.07},{"time":0.5,"angle":-21.6},{"time":1,"angle":0}]},"R_front_toe1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":29.24},{"time":0.5,"angle":34.84},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.412,"y":1},{"time":1,"x":1,"y":1}]},"R_front_toe2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":24.9},{"time":0.5,"angle":23.16},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.407,"y":1.058},{"time":1,"x":1,"y":1}]},"R_front_toe3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":11.01},{"time":0.5,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.33,"y":1.182},{"time":1,"x":1,"y":1}]},"L_rear_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":25.19},{"time":0.6667,"angle":-15.65},{"time":1,"angle":0}]},"COG":{"rotate":[{"time":0,"angle":0,"curve":[0.457,0.2,0.422,1.07]},{"time":0.3333,"angle":23.93},{"time":0.6667,"angle":337.8,"curve":[0.411,0,0.888,0.75]},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.33,1,0.816,1.34]},{"time":0.5,"x":-0.01,"y":113.01,"curve":[0.397,0,0.71,2.03]},{"time":1,"x":0,"y":0}]}}}}},"greengirl":{"skeleton":{"hash":"aAh3VItPnW4IzroHOhxRNsyoG0w","spine":"3.6.39","width":482.98,"height":874.12},"bones":[{"name":"root"},{"name":"core","parent":"root","x":-46.84,"y":500.83},{"name":"bone9","parent":"core","length":39.7,"rotation":63.62,"x":-8.29,"y":16.53},{"name":"bone10","parent":"bone9","length":48.76,"rotation":-21.49,"x":48.98,"y":-4.23},{"name":"bone11","parent":"bone10","length":47.69,"rotation":15.52,"x":56.07,"y":0.66},{"name":"bone20","parent":"bone11","x":61.09,"y":29.99},{"name":"Layer 38","parent":"bone20","length":35.64,"rotation":37.09,"x":13.36,"y":6.42,"scaleX":0.981,"scaleY":0.981},{"name":"Layer 21","parent":"Layer 38","x":25.98,"y":-66.46},{"name":"Layer 22","parent":"Layer 38","length":33.35,"rotation":176.85,"x":-7.25,"y":-53.28},{"name":"Layer 23","parent":"Layer 38","length":31.87,"rotation":-131.63,"x":14.89,"y":-90.3},{"name":"Layer 24","parent":"Layer 38","length":45.01,"rotation":-173.66,"x":10.63,"y":-73.44},{"name":"Layer 25","parent":"Layer 22","length":31.61,"rotation":-2.27,"x":57.28,"y":3.63},{"name":"Layer 26","parent":"Layer 25","length":32.19,"rotation":-16.24,"x":45.51,"y":-3.78},{"name":"Layer 27","parent":"Layer 26","length":34.78,"rotation":-1.8,"x":41.86,"y":-2.2},{"name":"Layer 28","parent":"Layer 27","length":28.48,"rotation":27.65,"x":42.99,"y":1.32},{"name":"Layer 29","parent":"Layer 24","length":40.3,"rotation":-2.25,"x":53.93,"y":0.47},{"name":"Layer 30","parent":"Layer 29","length":41.58,"rotation":-17.2,"x":50.07,"y":-2.07},{"name":"Layer 55","parent":"Layer 30","length":36.38,"rotation":9.39,"x":56.82,"y":0.47},{"name":"Layer 32","parent":"Layer 55","length":33.4,"rotation":-14.14,"x":46.29,"y":-2.56},{"name":"Layer 33","parent":"Layer 23","length":35.61,"rotation":-34.41,"x":49.29,"y":-7.95},{"name":"Layer 34","parent":"Layer 33","length":36.5,"rotation":-23.42,"x":52.97,"y":-5.58},{"name":"Layer 35","parent":"Layer 34","length":33.82,"rotation":-8.51,"x":53.79,"y":-4.25},{"name":"Layer 36","parent":"Layer 35","length":33.87,"rotation":17.48,"x":49.17,"y":0.87},{"name":"Layer 37","parent":"Layer 36","length":40.95,"rotation":15.41,"x":53.56,"y":2.1},{"name":"Layer 39","parent":"Layer 38","x":66.89,"y":-44.64},{"name":"Layer 40","parent":"Layer 38","length":28.16,"rotation":-92.7,"x":102.21,"y":-30.19},{"name":"Layer 41","parent":"Layer 38","length":32.55,"rotation":-54.08,"x":112.2,"y":-9.29},{"name":"Layer 42","parent":"Layer 38","length":19.87,"rotation":-15.83,"x":109.29,"y":39.61},{"name":"Layer 43","parent":"Layer 38","x":75.4,"y":2.88},{"name":"Layer 44","parent":"Layer 38","x":71.82,"y":54.01},{"name":"Layer 45","parent":"Layer 38","x":46.53,"y":0.49},{"name":"Layer 46","parent":"Layer 38","x":43.16,"y":49},{"name":"Layer 47","parent":"Layer 38","x":16.17,"y":32.55},{"name":"Layer 48","parent":"Layer 38","length":34.38,"rotation":-89.1,"x":53.96,"y":-51.39},{"name":"Layer 49","parent":"bone11","length":56.23,"rotation":152.19,"x":-28.89,"y":55.51},{"name":"Layer 51","parent":"bone11","length":98.48,"rotation":156.96,"x":39.62,"y":5.62},{"name":"Layer 52","parent":"Layer 51","length":103.41,"rotation":-87.3,"x":102.84,"y":-5.75},{"name":"bone16","parent":"core","length":172.41,"rotation":-133.85,"x":-35.57,"y":-50.05},{"name":"Layer 53","parent":"bone16","length":164.33,"rotation":123.17,"x":171.67,"y":8.73},{"name":"bone12","parent":"core","length":154.17,"rotation":-74.17,"x":13.8,"y":-28.24},{"name":"Layer 54","parent":"bone12","x":73.35,"y":12.13},{"name":"bone","parent":"bone11","rotation":-57.65,"x":45.38,"y":-27.12},{"name":"bone2","parent":"bone","length":45.03,"rotation":-90.45,"x":0.43,"y":-9.53},{"name":"bone3","parent":"bone2","length":52.51,"rotation":-49.1,"x":50.68,"y":-1.79},{"name":"bone4","parent":"bone3","length":66.37,"rotation":-26.75,"x":60.31,"y":-1.36},{"name":"bone5","parent":"bone4","length":65,"rotation":-11.14,"x":75.19,"y":1.25},{"name":"bone6","parent":"bone5","length":64.41,"rotation":3.15,"x":74.5,"y":-1.19},{"name":"bone7","parent":"bone6","length":47.84,"rotation":21.49,"x":73.07,"y":3.96},{"name":"bone8","parent":"bone7","length":36.8,"rotation":25.66,"x":54.1,"y":5.76},{"name":"bone13","parent":"bone12","length":197.51,"rotation":-7.24,"x":173.79,"y":-2.47,"scaleX":1.067},{"name":"bone14","parent":"bone13","length":42.22,"rotation":-18.43,"x":216.2,"y":1.97},{"name":"bone15","parent":"bone14","length":29.78,"rotation":-30.9,"x":49.28,"y":-2.88},{"name":"bone17","parent":"Layer 53","length":46.61,"rotation":-37.09,"x":171.89,"y":-0.23},{"name":"bone18","parent":"Layer 52","length":52.24,"rotation":-4.05,"x":109.97,"y":-2.16},{"name":"bone19","parent":"Layer 49","length":91.4,"rotation":-93.15,"x":58.63,"y":-9.16},{"name":"bone21","parent":"Layer 41","length":22.58,"rotation":-36.21,"x":36.11,"y":-2.48},{"name":"bone22","parent":"bone21","length":23.15,"rotation":-11.57,"x":27.16,"y":-2.55},{"name":"bone23","parent":"bone22","length":18.01,"rotation":34.32,"x":26.75,"y":-1.03},{"name":"bone24","parent":"Layer 40","length":20.68,"rotation":-21.49,"x":32.01,"y":-1.57},{"name":"bone25","parent":"bone24","length":20.57,"rotation":-10.7,"x":23.44,"y":-1.37},{"name":"bone26","parent":"bone25","length":15.61,"rotation":26.93,"x":22.29,"y":0.42},{"name":"bone27","parent":"Layer 42","length":16.71,"rotation":-42.39,"x":24.28,"y":-2.3},{"name":"bone28","parent":"bone27","length":17.45,"rotation":-12.86,"x":22.09,"y":-0.73},{"name":"bone29","parent":"bone28","length":14.33,"rotation":41.38,"x":24.79,"y":0.49},{"name":"bone30","parent":"bone29","length":16.02,"rotation":43.85,"x":17.89,"y":2.6},{"name":"bone31","parent":"Layer 39","length":17.67,"rotation":-111.49,"x":12.8,"y":-2.8},{"name":"bone32","parent":"Layer 39","length":27.18,"rotation":-154.34,"x":-8.02,"y":-2.38},{"name":"bone33","parent":"Layer 39","length":19.17,"rotation":-178.65,"x":-24.02,"y":3.73},{"name":"bone34","parent":"bone33","length":23.35,"rotation":-16.66,"x":23.57,"y":0.53},{"name":"bone35","parent":"Layer 21","length":19.53,"rotation":-90.9,"x":3.1,"y":-9.82}],"slots":[{"name":"Layer 17","bone":"bone","attachment":"greengirl/Layer 17"},{"name":"Layer 21","bone":"Layer 21","attachment":"greengirl/Layer 21"},{"name":"Layer 23","bone":"Layer 23","attachment":"greengirl/Layer 23"},{"name":"Layer 24","bone":"Layer 24","attachment":"greengirl/Layer 24"},{"name":"Layer 29","bone":"Layer 29","attachment":"greengirl/Layer 29"},{"name":"Layer 30","bone":"Layer 30","attachment":"greengirl/Layer 30"},{"name":"Layer 55","bone":"Layer 55","attachment":"greengirl/Layer 55"},{"name":"Layer 32","bone":"Layer 32","attachment":"greengirl/Layer 32"},{"name":"Layer 33","bone":"Layer 33","attachment":"greengirl/Layer 33"},{"name":"Layer 34","bone":"Layer 34","attachment":"greengirl/Layer 34"},{"name":"Layer 35","bone":"Layer 35","attachment":"greengirl/Layer 35"},{"name":"Layer 36","bone":"Layer 36","attachment":"greengirl/Layer 36"},{"name":"Layer 37","bone":"Layer 37","attachment":"greengirl/Layer 37"},{"name":"Layer 22","bone":"Layer 22","attachment":"greengirl/Layer 22"},{"name":"Layer 25","bone":"Layer 25","attachment":"greengirl/Layer 25"},{"name":"Layer 26","bone":"Layer 26","attachment":"greengirl/Layer 26"},{"name":"Layer 27","bone":"Layer 27","attachment":"greengirl/Layer 27"},{"name":"Layer 28","bone":"Layer 28","attachment":"greengirl/Layer 28"},{"name":"Layer 53","bone":"Layer 53","attachment":"greengirl/Layer 53"},{"name":"Layer 20","bone":"core","attachment":"greengirl/Layer 20"},{"name":"Layer 54","bone":"Layer 54","attachment":"greengirl/Layer 54"},{"name":"Layer 49","bone":"Layer 49","attachment":"greengirl/Layer 49"},{"name":"Layer 38","bone":"Layer 38","attachment":"greengirl/Layer 38"},{"name":"Layer 50","bone":"bone20","attachment":"greengirl/Layer 50"},{"name":"Layer 47","bone":"Layer 47","attachment":"greengirl/Layer 47"},{"name":"Layer 46","bone":"Layer 46","attachment":"greengirl/Layer 46"},{"name":"Layer 45","bone":"Layer 45","attachment":"greengirl/Layer 45"},{"name":"Layer 44","bone":"Layer 44","attachment":"greengirl/Layer 44"},{"name":"Layer 43","bone":"Layer 43","attachment":"greengirl/Layer 43"},{"name":"Layer 42","bone":"Layer 42","attachment":"greengirl/Layer 42"},{"name":"Layer 41","bone":"Layer 41","attachment":"greengirl/Layer 41"},{"name":"Layer 40","bone":"Layer 40","attachment":"greengirl/Layer 40"},{"name":"Layer 48","bone":"Layer 48","attachment":"greengirl/Layer 48"},{"name":"Layer 39","bone":"Layer 39","attachment":"greengirl/Layer 39"},{"name":"Layer 52","bone":"Layer 52","attachment":"greengirl/Layer 52"},{"name":"Layer 51","bone":"Layer 51","attachment":"greengirl/Layer 51"}],"skins":{"default":{"Layer 17":{"greengirl/Layer 17":{"type":"mesh","uvs":[0.94215,0.00502,0.94816,0.0993,0.93013,0.19774,0.88054,0.29895,0.82269,0.36827,0.75507,0.4168,0.69347,0.44314,0.6251,0.46255,0.54621,0.46533,0.47033,0.46117,0.39369,0.45562,0.31105,0.44453,0.24794,0.45978,0.17206,0.49721,0.11045,0.55129,0.06988,0.62061,0.0248,0.71628,0,0.81056,0,0.90484,0.01729,0.91593,0.0248,0.98109,0.06011,1,0.08866,0.95059,0.11346,0.97971,0.14952,0.92009,0.19159,0.91593,0.21488,0.98109,0.27724,0.93118,0.281,0.88959,0.32457,0.88404,0.33659,0.81888,0.38092,0.77035,0.4538,0.74539,0.50338,0.73846,0.56349,0.72598,0.63186,0.72321,0.69271,0.71073,0.7716,0.66636,0.83546,0.61229,0.89632,0.54713,0.93464,0.49583,0.97971,0.40155,1,0.31836,1,0.2421,1,0.09791,1,0,0.9722,0.05909,0.96844,0.18249,0.94816,0.28647,0.8843,0.43066,0.81217,0.50137,0.74906,0.53742,0.6251,0.58318,0.54095,0.58595,0.40722,0.58872,0.32908,0.58318,0.23892,0.61506,0.17807,0.69964,0.09542,0.80224,0.24193,0.81472,0.33058,0.68716],"triangles":[21,20,22,26,25,27,20,19,22,23,22,24,24,22,58,25,24,58,58,22,19,25,58,59,58,19,17,19,18,17,17,16,58,58,16,57,16,15,57,27,25,28,25,59,28,58,57,59,15,14,57,29,28,30,30,28,59,30,59,60,59,57,60,57,56,60,57,14,56,14,13,56,56,12,55,56,13,12,31,30,60,56,55,60,12,11,55,31,60,32,33,32,54,32,60,54,33,54,53,60,55,54,55,10,54,54,9,53,54,10,9,55,11,10,33,53,34,53,9,8,34,52,35,34,53,52,35,52,36,36,52,37,53,8,52,8,7,52,51,52,7,37,51,38,51,50,38,38,50,39,51,5,50,51,6,5,49,50,5,52,51,37,51,7,6,43,48,2,39,50,49,49,5,4,40,39,49,40,49,41,4,3,49,41,3,48,41,49,3,41,48,42,48,43,42,3,2,48,1,0,46,46,45,44,43,2,47,47,44,43,2,1,47,47,1,44,1,46,44,46,0,45],"vertices":[1,41,-11.45,-1.29,1,2,41,-9.15,-20.8,0.33333,42,11.35,-9.5,0.66667,2,42,31.78,-16.23,0.66667,43,-1.45,-23.74,0.33333,2,42,52.87,-35.02,0.33333,43,26.56,-20.1,0.66667,2,43,52.69,-23.52,0.66667,44,3.17,-23.22,0.33333,2,43,78.86,-32.64,0.33333,44,30.64,-19.59,0.66667,2,44,54.8,-19.88,0.66667,45,-15.92,-24.67,0.33333,1,45,10.35,-21.83,1,2,45,40.48,-22.62,0.66667,46,-35.15,-19.51,0.33333,2,45,69.4,-24.78,0.33333,46,-6.4,-23.27,0.66667,1,46,22.62,-27.35,1,2,46,53.8,-32.79,0.66667,47,-31.4,-27.14,0.33333,2,46,78.1,-32.06,0.33333,47,-8.52,-35.36,0.66667,1,47,20.8,-41.74,1,2,47,46.85,-42.56,0.66667,48,-27.44,-40.42,0.33333,2,47,67.19,-36.89,0.33333,48,-6.65,-44.12,0.66667,1,48,19.53,-45.89,1,1,48,40.81,-41.67,1,1,48,56.37,-29.89,1,1,48,54.22,-23.24,1,1,48,63.24,-12.81,1,1,48,58.22,0.31,1,1,48,43.48,2.83,1,1,48,42.57,14.02,1,1,48,24.42,17.56,1,1,48,14.03,29.85,1,2,47,52.09,54.81,0.33333,48,19.42,45.09,0.66667,2,47,26.18,56.52,0.66667,48,-3.2,57.84,0.33333,1,47,20.97,49.52,1,1,47,5.64,56.12,1,2,46,51.85,45.29,0.33333,47,-4.61,46.23,0.66667,2,46,33.99,36.99,0.66667,47,-24.27,45.05,0.33333,1,46,5.78,34.63,1,2,45,59.37,33.13,0.33333,46,-13.21,35.1,0.66667,2,45,36.31,31.58,0.66667,46,-36.32,34.83,0.33333,1,45,10.2,32.18,1,2,44,68.22,33.87,0.33333,45,-13.14,30.65,0.66667,2,44,36.76,32.09,0.66667,45,-43.66,22.83,0.33333,2,43,81.75,18.08,0.33333,44,10.41,27.01,0.66667,2,43,55.31,22.9,0.66667,44,-15.38,19.42,0.33333,1,43,37.28,24.32,1,1,43,11.52,20.65,1,2,42,56.55,10.64,0.33333,43,-5.55,12.57,0.66667,2,42,40.76,10.52,0.66667,43,-15.8,0.56,0.33333,2,41,10.65,-20.52,0.33333,42,10.91,10.3,0.66667,1,41,10.65,-0.25,1,1,42,2.96,-0.38,1,1,42,28.51,-1.62,1,1,43,5.23,-5.3,1,1,43,43.16,1.58,1,1,44,13.6,2.59,1,1,44,38.79,4.12,1,1,45,11.47,3.11,1,1,45,43.61,2.24,1,1,46,20.24,0.58,1,1,46,49.82,-3.55,1,1,47,9.25,-8.36,1,1,47,37.93,-3.43,1,1,48,17.44,-13.64,1,1,47,27.15,28.91,1,1,46,51.4,17.93,1],"hull":46}},"Layer 20":{"greengirl/Layer 20":{"type":"mesh","uvs":[0.89243,0,0.95696,0.04831,0.92521,0.09845,0.86067,0.14445,0.78794,0.16875,0.75721,0.20338,0.75413,0.21941,0.78896,0.2375,0.84326,0.2773,0.85452,0.31504,0.87091,0.35396,0.88526,0.41289,0.88833,0.47647,0.8914,0.51317,0.94262,0.55194,0.97565,0.59684,0.97258,0.63767,1,0.65835,1,0.69815,0.94902,0.77517,0.91931,0.86719,0.92443,0.87701,0.96848,0.90596,0.9357,0.94014,0.88858,0.97115,0.82916,0.99235,0.76975,1,0.71648,1,0.71751,0.96288,0.74926,0.93445,0.7759,0.89,0.77282,0.85485,0.77692,0.84089,0.74107,0.74784,0.66321,0.67341,0.69895,0.64536,0.68973,0.57196,0.65183,0.54456,0.58525,0.4908,0.53095,0.41792,0.46232,0.46082,0.3773,0.49442,0.28715,0.5213,0.21954,0.54766,0.12837,0.55645,0.03822,0.55077,0,0.5213,0,0.46599,0.04744,0.40189,0.14886,0.34555,0.25744,0.29261,0.35271,0.26314,0.39573,0.25435,0.4111,0.24195,0.43159,0.19923,0.46335,0.17079,0.50535,0.13978,0.50535,0.1098,0.47461,0.07413,0.55144,0.0426,0.63749,0.03329,0.69076,0.00228,0.7932,0,0.80066,0.03452,0.66294,0.10335,0.6113,0.15748,0.53317,0.20559,0.49079,0.25972,0.45901,0.30516,0.48682,0.3673,0.53449,0.33924,0.58349,0.25905,0.68016,0.22831,0.46828,0.37732,0.43252,0.33456,0.39412,0.28177,0.41403,0.30914,0.29348,0.34997,0.21005,0.39608,0.13722,0.44085,0.08822,0.4883,0.62454,0.32659,0.66956,0.39474,0.71459,0.47493,0.75696,0.52505,0.79139,0.54777,0.80331,0.58586,0.80728,0.61727,0.80993,0.66805,0.82582,0.74356,0.83509,0.83043,0.83774,0.85382,0.83906,0.87654,0.8192,0.93599,0.78609,0.96606,0.76399,0.07827,0.74837,0.29199,0.79491,0.37174,0.82213,0.46568,0.74307,0.14062,0.83674,0.09397],"triangles":[75,51,52,53,76,75,74,76,68,77,50,51,77,51,75,77,75,76,73,74,69,78,49,50,78,50,77,79,48,49,79,49,78,73,41,74,40,73,39,80,48,79,47,48,80,74,41,77,74,77,76,40,41,73,46,47,80,42,78,77,42,77,41,43,78,42,79,78,43,44,80,79,45,46,80,43,44,79,45,80,44,25,93,24,94,93,25,94,27,28,94,28,29,26,27,94,26,94,25,93,30,92,29,30,93,23,21,22,94,29,93,24,21,23,93,92,24,84,36,83,85,13,86,98,13,85,14,87,86,16,14,15,14,86,13,16,87,14,36,86,35,85,36,84,86,36,85,35,86,87,88,87,16,35,87,88,16,17,18,89,88,16,19,89,16,33,35,88,33,88,89,34,35,33,18,19,16,90,89,19,32,33,89,32,89,90,20,91,90,32,90,91,19,20,90,92,91,20,31,92,30,91,31,32,92,31,91,21,24,92,21,92,20,71,65,72,96,6,7,81,71,72,81,72,96,70,67,71,70,71,81,8,96,7,9,96,8,97,9,10,9,97,96,82,81,96,82,96,97,39,69,70,11,98,97,11,97,10,83,82,97,83,97,98,98,11,12,39,81,82,81,39,70,38,82,83,38,39,82,84,83,98,37,38,83,36,37,83,85,84,98,12,13,98,63,62,0,95,61,62,95,62,63,100,63,0,2,100,0,95,63,100,1,2,0,64,60,61,64,61,95,3,100,2,64,59,60,4,95,100,4,100,3,57,58,59,65,56,57,99,64,95,64,65,59,65,57,59,99,95,4,5,99,4,72,64,99,65,64,72,66,56,65,55,56,66,5,72,99,6,72,5,71,66,65,67,55,66,54,55,67,53,54,67,96,72,6,67,66,71,68,53,67,75,52,53,68,76,53,68,67,70,69,68,70,74,68,69,73,69,39],"vertices":[1,4,76.31,-9.15,1,1,4,61.11,-43.83,1,1,4,28.01,-52.48,1,1,4,-8.58,-50.6,1,3,2,62.84,-59.22,0.33333,3,33.04,-46.1,0.33333,4,-34.69,-38.9,0.33333,2,2,38.19,-60.19,0.66667,3,10.47,-56.03,0.33333,1,2,28.41,-63.92,1,1,39,-12.77,65.19,1,1,39,16.99,75.26,1,1,39,41.59,72.13,1,1,39,67.4,70.4,1,1,39,105.54,64.47,1,1,39,145.58,54.17,1,1,49,-11.39,50.06,1,1,49,16.04,62.91,1,1,49,46.51,69.27,1,1,49,72.61,64.31,1,1,49,87.24,71.2,1,1,49,112.83,67.34,1,1,49,159.84,43.33,1,2,49,217.52,24.78,0.55,50,-5.94,22.05,0.45,2,49,224.09,25.48,0.55,50,0.06,24.8,0.45,1,50,16.13,42.25,1,1,50,39.86,35.45,1,1,51,-2.4,29.5,1,1,51,20.76,23.72,1,1,51,37.24,12.2,1,1,51,48.64,-1.05,1,1,51,30.14,-16.53,1,1,50,46.66,-25.44,1,2,49,225.17,-23.95,0.55,50,16.7,-21.76,0.45,2,49,202.42,-21.54,0.55,50,-5.64,-26.66,0.45,1,49,193.65,-18.86,1,1,49,132.09,-21.46,1,1,49,80.44,-39.49,1,1,49,64.16,-25.18,1,1,49,16.53,-21.05,1,1,39,167,-32.55,1,1,39,127.42,-44.03,1,1,39,76.98,-48.23,1,1,37,66.3,65.64,1,1,37,101.36,60.64,1,1,37,134.44,51.41,1,1,37,162.16,47.28,1,1,37,186.99,29.66,1,1,37,204.8,5.77,1,1,37,199.66,-16.54,1,1,37,173.72,-41.44,1,1,37,132.89,-59.06,1,1,37,83.43,-60.42,1,1,37,33.94,-58.55,1,1,37,-1.51,-49.27,1,1,1,-55.95,-9.12,1,1,2,-34.7,30.37,1,1,2,-6.84,36.69,1,2,2,14.34,35.57,0.66667,3,-46.8,24.34,0.33333,2,2,38.53,32.18,0.33333,3,-23.06,30.05,0.66667,1,3,-9.99,44.5,1,1,3,-1.91,68.46,1,1,4,-6.94,70.51,1,1,4,13.28,49.91,1,1,4,39.66,45.94,1,1,4,58.89,18.34,1,1,4,41.24,4.27,1,1,3,31.16,12.93,1,2,2,43.66,-4.06,0.5,3,-5.01,-1.79,0.5,1,2,4.26,5,1,1,1,-24.78,-12.61,1,1,1,-35.2,-42.15,1,1,1,-26.08,-82.54,1,1,39,28.08,-33.16,1,1,39,-17.68,-3.48,1,2,2,12.45,-44.75,0.52,39,-28.25,32.48,0.48,1,37,25.79,29.47,1,1,37,13.85,1.76,1,1,37,-2.18,-31.09,1,1,37,6.13,-14.06,1,1,37,52.66,-24.21,1,1,37,93.23,-23.2,1,1,37,130.77,-20.28,1,1,37,164.15,-10.52,1,1,39,28.23,-2.5,1,1,39,74.89,-0.38,1,2,39,129.07,-0.39,0.74,49,-44.62,-3.58,0.26,2,39,164.2,4.09,0.66667,49,-10.33,5.3,0.33333,2,39,181.49,10.93,0.32,49,5.96,14.26,0.68,1,49,31.02,14.44,1,1,49,51.4,12.68,1,1,49,84.18,8.61,1,1,49,133.49,6.44,1,1,49,189.78,1.02,1,2,49,204.94,-0.39,0.55,50,-9.93,-5.79,0.45,2,49,219.61,-2.16,0.55,50,4.54,-2.84,0.45,1,50,43.73,-2.66,1,1,51,17.02,1.86,1,2,3,66.67,2.79,0.33644,4,10.79,-0.79,0.66356,1,39,17.68,42.72,1,1,39,71.72,43.26,1,2,39,132.9,35.19,0.87356,49,-45.31,32.2,0.12644,3,2,72.68,-37.92,0.20155,3,34.4,-22.66,0.56385,4,-27.12,-16.68,0.2346,1,4,14.94,-26.41,1],"hull":63}},"Layer 21":{"greengirl/Layer 21":{"type":"mesh","uvs":[0.83313,0.4014,0.93962,0.37444,1,0.35785,1,0.28527,0.90501,0.23343,0.77456,0.16085,0.59088,0.04058,0.55893,0,0.33265,0,0,0.2438,0,0.5196,0,0.94263,0.18623,0.90116,0.56692,0.97788,0.65477,0.63158,0.77723,0.52789,0.82515,0.30186,0.63879,0.23343,0.49504,0.13804,0.55094,0.42421],"triangles":[0,17,16,0,16,1,3,2,1,1,16,4,1,4,3,17,5,16,16,5,4,13,12,14,11,10,12,12,19,14,12,10,19,14,19,15,15,19,0,17,0,19,19,9,18,18,9,8,9,19,10,19,18,17,18,6,17,17,6,5,18,7,6,18,8,7],"vertices":[2,7,-6.13,-33.93,0.37,69,24.26,-8.85,0.63,1,69,32.29,-6.82,1,1,69,36.85,-5.54,1,1,69,37.31,1.34,1,1,69,30.63,6.72,1,2,7,17,-31.49,0.37,69,21.45,14.24,0.63,1,7,29.5,-18.88,1,1,7,33.54,-16.84,1,1,7,34.91,-0.15,1,1,7,13.85,26.28,1,1,7,-12.26,28.44,1,1,7,-52.31,31.74,1,1,7,-49.52,17.68,1,1,7,-59.09,-9.8,1,1,7,-26.84,-18.98,1,1,7,-17.77,-28.82,1,2,7,3.34,-34.12,0.37,69,24.3,0.62,0.63,2,7,10.95,-20.91,0.37,69,10.97,8.03,0.63,1,7,20.86,-11.05,1,1,7,-6.58,-12.94,1],"hull":16}},"Layer 22":{"greengirl/Layer 22":{"x":19.99,"y":0.02,"rotation":88.42,"width":31,"height":66}},"Layer 23":{"greengirl/Layer 23":{"x":24.46,"y":-1.77,"rotation":36.9,"width":39,"height":40}},"Layer 24":{"greengirl/Layer 24":{"x":24.08,"y":0.83,"rotation":78.92,"width":34,"height":64}},"Layer 25":{"greengirl/Layer 25":{"x":17.82,"y":0.58,"rotation":90.69,"width":29,"height":50}},"Layer 26":{"greengirl/Layer 26":{"x":17.9,"y":2.52,"rotation":106.93,"width":32,"height":45}},"Layer 27":{"greengirl/Layer 27":{"x":19.09,"y":1.18,"rotation":108.74,"width":31,"height":43}},"Layer 28":{"greengirl/Layer 28":{"x":20.16,"y":-2.61,"rotation":81.09,"width":31,"height":51}},"Layer 29":{"greengirl/Layer 29":{"x":23.42,"y":0.03,"rotation":81.18,"width":30,"height":51}},"Layer 30":{"greengirl/Layer 30":{"x":24.38,"y":1.55,"rotation":98.38,"width":30,"height":57}},"Layer 32":{"greengirl/Layer 32":{"x":31.54,"y":2.23,"rotation":103.13,"width":33,"height":74}},"Layer 33":{"greengirl/Layer 33":{"x":19.56,"y":1.15,"rotation":71.31,"width":28,"height":54}},"Layer 34":{"greengirl/Layer 34":{"x":19.62,"y":1.78,"rotation":94.73,"width":29,"height":57}},"Layer 35":{"greengirl/Layer 35":{"x":17.82,"y":0.4,"rotation":103.23,"width":28,"height":51}},"Layer 36":{"greengirl/Layer 36":{"x":18.34,"y":-1.15,"rotation":85.75,"width":35,"height":53}},"Layer 37":{"greengirl/Layer 37":{"x":27.1,"y":2.69,"rotation":70.34,"width":38,"height":68}},"Layer 38":{"greengirl/Layer 38":{"type":"mesh","uvs":[0.21025,0.99554,0.14639,0.99144,0.08071,0.93249,0.0246,0.82214,0.03555,0.68156,0.01776,0.52284,0.03008,0.34749,0.1245,0.18725,0.31197,0.1283,0.39245,0.12393,0.56239,0.1147,0.77723,0.18272,0.84702,0.58179,0.75397,0.72388,0.58702,0.88109,0.45566,0.92039,0.33797,0.97632,0.26408,0.999,0.14639,0.84935,0.13545,0.73446,0.12176,0.52737,0.14366,0.40493,0.19976,0.28098,0.29598,0.68289,0.27836,0.76887,0.3415,0.83699,0.44429,0.78346,0.47219,0.65694,0.36059,0.63423,0.144,0.66507],"triangles":[16,17,25,17,18,25,2,18,1,0,1,18,18,17,0,16,25,15,25,18,24,2,3,18,25,26,15,15,26,14,13,14,27,3,19,18,18,19,24,25,24,26,3,4,19,24,23,26,23,28,26,14,26,27,26,28,27,24,19,23,23,19,29,19,4,29,13,27,12,28,23,20,4,20,29,4,5,20,23,29,20,27,11,12,11,27,10,9,10,27,27,28,9,20,21,28,21,22,28,28,22,9,20,5,21,5,6,21,21,6,22,6,7,22,22,8,9,22,7,8],"vertices":[-11.43,32.32,-9.73,44.35,1.4,55.96,21.19,65.02,45.12,60.96,72.6,62.09,102.47,57.28,128.46,37.13,135.64,0.8,135.13,-14.5,134.06,-46.81,119.05,-86.53,49.55,-94.11,26.65,-74.48,2.31,-40.65,-2.38,-15.21,-10.13,7.86,-12.86,22.17,14.63,42.34,34.49,42.79,70.2,42.46,90.85,36.58,111.22,24.2,40.82,11.66,26.36,16.22,13.7,5.22,21.27,-15,42.52,-22.07,48.16,-1.26,46.25,40.19],"hull":18}},"Layer 39":{"greengirl/Layer 39":{"type":"mesh","uvs":[0.26243,1,0.38589,0.95351,0.60872,0.89407,0.72014,0.77953,0.79542,0.63454,0.76531,0.5345,0.80445,0.44606,0.7894,0.34892,0.82252,0.28078,1,0.30687,1,0.19958,0.80445,0.12419,0.67798,0.0575,0.48827,0.0169,0.28652,0,4.5E-4,0,0,0.15029,0,0.30977,0,0.48666,0.03056,0.68239,0.02153,0.79548,0,0.92306,0,0.97671,0.07272,1,0.20823,0.89842,0.34373,0.75053,0.3347,0.58525,0.23232,0.40836,0.56657,0.5838,0.51537,0.41851,0.33771,0.27353,0.64787,0.25468,0.43407,0.17059,0.26243,0.0807,0.76832,0.17349,0.53043,0.0807],"triangles":[19,18,27,18,17,27,17,16,33,16,15,33,24,20,19,23,24,0,0,24,1,24,23,21,23,22,21,24,25,1,1,25,2,21,20,24,25,24,19,19,27,26,25,28,2,4,3,28,2,28,3,25,26,28,26,29,28,19,26,25,30,32,29,28,29,5,5,29,6,7,29,31,29,7,6,27,30,29,4,28,5,26,27,29,8,10,9,31,34,8,34,11,8,8,11,10,32,35,31,31,12,34,31,35,12,34,12,11,32,13,35,32,14,13,35,13,12,29,32,31,7,31,8,17,33,30,33,15,14,33,14,32,30,33,32,27,17,30],"vertices":[1,68,31.52,2.97,1,1,68,25.41,8.36,1,2,67,45.15,13.47,0.33333,68,16.97,18.57,0.66667,3,66,50.74,-7.49,0.33333,67,33.47,20.54,0.33333,68,3.75,22,0.33333,2,66,39.21,3.8,0.66667,67,18.31,26.09,0.33333,1,66,29.1,7.92,1,1,66,21.89,14.51,1,2,65,29.36,-13.96,0.33333,66,12.44,19.14,0.66667,2,65,28.89,-6.42,0.66667,66,6.96,24.35,0.33333,1,65,38.54,-6.46,1,1,65,35.2,4.64,1,1,65,23.12,9.5,1,1,65,14.74,14.51,1,2,24,26.09,-12.35,0.14,65,4.03,15.86,0.86,2,24,28.77,-2.05,0.72,65,-6.54,14.58,0.28,1,6,96.88,-31.87,1,1,6,80.71,-30.51,1,1,6,63.54,-29.09,1,1,6,44.5,-27.52,1,1,6,23.31,-27.37,1,1,68,12.1,-13.39,1,1,68,25.85,-11.97,1,1,68,31.55,-10.91,1,1,68,33.33,-6.73,1,1,68,21.25,-1.81,1,1,67,28.28,1.41,1,1,67,10.48,2.83,1,2,24,-14.96,4.39,0.72,66,3.32,-9.1,0.28,1,67,11.6,14.84,1,1,66,11.71,3.04,1,2,24,-0.89,-2.27,0.72,66,-6.47,2.99,0.28,1,65,19.38,-6.34,1,2,24,9.78,-8.18,0.42,65,6.12,-0.85,0.58,2,24,20.18,-0.08,0.72,65,-5.23,5.88,0.28,1,65,22.85,3.86,1,1,65,8.12,9.89,1],"hull":24}},"Layer 40":{"greengirl/Layer 40":{"type":"mesh","uvs":[0,0.17982,0.07924,0.02625,0.22076,0,0.44811,0,0.62728,0.08346,0.77785,0.23101,0.85162,0.53816,0.92841,0.65259,1,0.74292,0.93292,0.89349,0.83205,0.99888,0.67396,1,0.51135,0.95973,0.35627,0.9507,0.22378,0.93263,0.11387,0.65259,0.02503,0.45987,0,0.39964,0.21625,0.39663,0.40746,0.36953,0.54297,0.53816,0.66643,0.71883,0.83807,0.76701,0.31411,0.6827],"triangles":[17,0,18,16,17,18,15,16,18,14,15,23,7,22,6,22,7,8,9,22,8,10,22,9,22,21,6,22,10,11,20,19,5,21,23,20,21,12,23,20,5,6,21,20,6,22,11,21,11,12,21,18,0,2,14,23,13,19,4,5,19,3,4,23,19,20,23,12,13,19,2,3,23,18,19,18,2,19,15,18,23,2,0,1],"vertices":[1,6,111.22,-24.01,1,1,25,1.92,16.4,1,2,25,16.68,17.25,0.49333,58,-21.16,11.9,0.50667,3,25,40.31,16.42,0.16,58,1.14,19.78,0.50667,59,-25.85,16.64,0.33333,2,58,20.16,21.9,0.33333,59,-7.55,22.25,0.66667,2,59,9.84,23.49,0.66667,60,-0.65,26.2,0.33333,2,59,24.51,13.53,0.33333,60,7.91,10.68,0.66667,1,60,16.22,5.19,1,1,60,23.92,0.92,1,1,60,17.4,-7.29,1,2,59,34.79,-8.21,0.33333,60,7.23,-13.35,0.66667,2,59,20.6,-16.52,0.66667,60,-9.18,-14.34,0.33333,2,58,23.97,-25.09,0.33333,59,4.92,-23.21,0.66667,3,25,29.03,-32.65,0.33333,58,8.6,-30.02,0.33333,59,-9.26,-30.91,0.33333,1,6,70.3,-43.99,1,1,6,85.75,-33.79,1,1,6,96.49,-25.41,1,1,6,99.83,-23.07,1,2,25,15.48,-3.35,0.48,58,-14.73,-7.7,0.52,1,58,3.56,0.25,1,1,59,-3.25,-2.6,1,1,59,12.57,-4.27,1,1,60,7.18,-1.28,1,1,58,-0.17,-18.34,1],"hull":18}},"Layer 41":{"greengirl/Layer 41":{"type":"mesh","uvs":[0,0.63736,0.07507,0.35751,0.21339,0.08765,0.33344,0,0.46915,0,0.59702,0.061,0.74969,0.20759,0.8854,0.21758,0.96761,0.09098,1,0.08432,1,0.33419,0.98588,0.60071,0.92846,0.89723,0.84364,1,0.67532,1,0.52265,1,0.34779,0.94387,0.22122,0.92721,0.06985,0.93054,0.01635,0.90389,0,0.8106,0.10509,0.67734,0.2421,0.35084,0.38563,0.19093,0.3765,0.64736,0.53047,0.50743,0.68445,0.62737,0.82538,0.53408,0.52134,0.19759,0.70533,0.35084,0.92977,0.33419,0.80711,0.80061,0.53439,0.78062,0.35954,0.42414,0.22252,0.68733],"triangles":[21,17,20,17,34,16,19,20,18,17,18,20,7,8,9,10,7,9,30,7,10,11,30,10,29,7,30,27,30,11,26,25,29,32,26,31,31,14,32,7,29,6,27,29,30,27,26,29,31,26,27,31,27,11,12,31,11,13,14,31,12,13,31,15,16,32,29,28,6,2,3,23,33,22,23,16,24,32,33,25,24,28,23,4,5,28,4,28,5,6,25,28,29,32,25,26,14,15,32,23,3,4,28,33,23,25,33,28,24,25,32,24,34,33,22,2,23,33,34,22,1,2,22,21,1,22,34,21,22,0,1,21,20,0,21,21,34,17,16,34,24],"vertices":[1,26,-9.84,21.17,1,2,26,5.57,25.28,0.78333,55,-41.05,4.35,0.21667,2,26,26.42,24.1,0.45,55,-23.52,15.72,0.55,2,26,40.04,17.84,0.11667,55,-8.84,18.71,0.88333,1,55,7.4,17.46,1,2,55,22.48,13.41,0.66667,56,-7.79,14.7,0.33333,3,55,40.21,5.13,0.33333,56,11.24,10.14,0.33333,57,-6.51,17.96,0.33333,2,56,27.46,11.69,0.33333,57,7.76,10.1,0.66667,1,57,19.25,10.89,1,1,57,22.85,9.4,1,1,57,17.49,-1.05,1,2,56,41.66,-4.68,0.33333,57,10.26,-11.42,0.66667,2,56,36.56,-19.37,0.66667,57,-2.23,-20.67,0.33333,1,56,27.06,-25.42,1,2,55,28.44,-31.31,0.33333,56,7.01,-27.93,0.66667,3,26,26.66,-32.61,0.33333,55,10.17,-29.9,0.33333,56,-11.17,-30.2,0.33333,1,6,105.78,-29.32,1,1,6,107.81,-14.25,1,1,6,109.14,3.87,1,1,6,110.92,10.16,1,1,6,115.45,11.76,1,1,26,-1.49,11.53,1,2,26,20.98,12.47,0.35,55,-21.04,3.12,0.65,1,55,-3.29,9.28,1,1,55,-6.04,-12.02,1,1,55,12.89,-6.89,1,1,56,5.92,-10.41,1,1,56,22.16,-3.96,1,1,55,12.93,7.71,1,1,56,6.8,2.79,1,1,57,9.99,2.8,1,1,56,21.54,-16.67,1,1,55,12.37,-19.73,1,1,55,-7.25,-1.4,1,1,26,8.9,1.99,1],"hull":21}},"Layer 42":{"greengirl/Layer 42":{"type":"mesh","uvs":[0,1,0,0.80828,0.00813,0.62307,0.1321,0.44796,0.28542,0.35873,0.4469,0.28801,0.55455,0.21224,0.59043,0.11964,0.57575,0,0.64589,0,0.76985,0.05398,0.89056,0.13984,0.96069,0.2577,0.93623,0.4126,0.84162,0.54225,0.73723,0.63485,0.50235,0.77797,0.31967,0.83353,0.18266,0.92614,0.08153,1,0.2479,0.71399,0.30499,0.5574,0.48604,0.51194,0.67525,0.43113,0.73886,0.2577,0.6883,0.10954],"triangles":[18,19,1,19,0,1,18,20,17,17,20,16,25,6,7,24,25,10,7,9,25,7,8,9,25,9,10,24,11,12,24,10,11,23,24,13,14,23,13,6,25,24,13,24,12,16,22,15,23,6,24,15,23,14,22,5,23,5,6,23,22,23,15,4,5,22,21,4,22,21,22,16,3,4,21,20,3,21,18,1,20,1,2,20,20,21,16,2,3,20],"vertices":[1,6,96.94,53.43,1,1,27,1.84,13.35,1,1,27,18.89,15.9,1,3,27,37.16,7.35,0.33333,61,3.01,15.82,0.33333,62,-22.29,11.89,0.33333,2,61,19.78,13.73,0.33333,62,-5.48,13.58,0.66667,2,62,11.36,13.39,0.66667,63,-1.55,18.56,0.33333,3,62,23.66,15.69,0.33333,63,9.2,12.16,0.33333,64,0.36,12.92,0.33333,2,63,18.46,12.68,0.23,64,7.39,6.87,0.77,1,64,18.37,4.61,1,1,64,16.19,-1.77,1,2,63,31.27,-0.36,0.23,64,7.59,-11.4,0.77,2,63,28.92,-14.23,0.66667,64,-3.71,-19.78,0.33333,1,63,21.83,-24.96,1,1,63,7.78,-28.92,1,2,62,36.59,-23.47,0.33333,63,-6.99,-25.77,0.66667,3,27,31.28,-53,0.33333,62,23.95,-27.34,0.33333,63,-19.03,-20.33,0.33333,1,6,113.53,3.66,1,1,6,109.83,21.57,1,1,6,102.34,35.38,1,1,6,96.29,45.63,1,1,27,15.02,-8.32,1,1,61,10.29,-2.24,1,1,62,6.45,-7.2,1,1,62,26.1,-7.6,1,1,63,12.84,-5.66,1,1,64,5.24,-2.32,1],"hull":20}},"Layer 43":{"greengirl/Layer 43":{"x":0.59,"y":-2.41,"rotation":-94.74,"width":47,"height":17}},"Layer 44":{"greengirl/Layer 44":{"x":0.79,"y":-3.59,"rotation":-94.74,"width":16,"height":14}},"Layer 45":{"greengirl/Layer 45":{"type":"mesh","uvs":[0.01161,0.38272,0.18761,0.11225,0.39881,0,0.68481,0,0.94001,0.06243,1,0.18343,1,0.38984,0.91801,0.66743,0.76841,0.90231,0.55721,1,0.25801,1,0.06441,0.84537,0,0.68878,0.22281,0.71725,0.43401,0.51796,0.64081,0.43254,0.80801,0.48949],"triangles":[5,3,4,15,2,3,5,15,3,5,16,15,6,16,5,14,2,15,1,2,14,0,1,14,7,16,6,13,12,0,14,13,0,11,12,13,8,15,16,8,16,7,14,15,8,9,13,14,9,10,13,11,13,10,14,8,9],"vertices":[15.88,24.05,24.25,13.64,27.1,1.75,25.81,-13.92,22.54,-27.74,18.17,-30.69,11.17,-30.11,2.14,-24.84,-5.15,-15.98,-7.5,-4.13,-6.15,12.27,-0.04,22.45,5.56,25.54,3.59,13.41,9.39,1.27,11.35,-10.3,8.66,-19.31],"hull":13}},"Layer 46":{"greengirl/Layer 46":{"type":"mesh","uvs":[0,0.4873,0.25981,0.51663,0.38946,0.69996,0.37217,0.9713,0.58824,1,0.83024,0.97863,1,0.71463,1,0.32596,0.76974,0.0473,0.54503,0,0.11288,0,0,0.03997,0,0.2453,0.38081,0.4433,0.60553,0.36263,0.83888,0.45796],"triangles":[12,11,10,14,9,8,15,14,8,13,10,9,13,9,14,12,10,13,7,15,8,1,0,12,13,1,12,2,13,14,1,13,2,15,7,6,15,2,14,5,15,6,5,2,15,4,3,2,5,4,2],"vertices":[9.67,18.11,8.1,10.94,1.78,7.82,-7.11,9.04,-8.55,3.09,-8.4,-3.72,-0.11,-9.17,12.67,-10.23,22.37,-4.56,24.44,1.58,25.43,13.64,24.38,16.9,17.63,17.46,10.24,7.37,12.37,0.88,8.7,-5.37],"hull":13}},"Layer 47":{"greengirl/Layer 47":{"type":"mesh","uvs":[0.62887,1,0.80487,0.83431,1,0.58179,1,0.2977,0.8122,0.09779,0.66554,0,0.33554,0,0.13754,0,0,0,0,0.30822,0,0.70805,0.0862,0.92901,0.3502,1,0.1522,0.55022,0.26954,0.43448,0.46754,0.41344,0.80487,0.45553],"triangles":[9,8,7,15,6,5,15,5,4,14,7,6,14,6,15,9,7,14,16,15,4,16,4,3,13,9,14,16,3,2,10,9,13,1,16,2,15,16,1,11,10,13,15,13,14,0,12,15,12,13,15,11,13,12,1,0,15],"vertices":[-12.87,-7.25,-9.55,-13.35,-4.29,-20.25,2.22,-20.78,7.31,-14.98,9.95,-10.35,10.85,0.51,11.38,7.02,11.76,11.54,4.69,12.13,-4.47,12.88,-9.77,10.46,-12.11,1.92,-1.27,7.58,1.07,3.5,1.01,-3.05,-0.87,-14.07],"hull":13}},"Layer 48":{"greengirl/Layer 48":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[49.62,-36.87,-3.12,-31.68,1.87,19.07,54.61,13.88],"hull":4}},"Layer 49":{"greengirl/Layer 49":{"type":"mesh","uvs":[0.37814,0.90491,0.58449,0.91758,0.7695,0.85849,0.95925,0.74453,1,0.62002,0.93791,0.46808,0.63193,0.44487,0.48725,0.22329,0.24294,0,0.0437,0,0,0.0819,0,0.27816,0,0.62847,0.1955,0.70022,0.25954,0.83949],"triangles":[13,7,6,7,13,12,7,12,8,10,9,8,8,12,11,8,11,10,2,1,6,6,1,0,6,0,13,3,6,5,3,2,6,0,14,13,3,5,4],"vertices":[1,34,78.1,11.48,1,1,34,57.29,25.39,1,1,34,33.88,29.55,1,1,34,6.25,27.53,1,1,34,-6.45,15.29,1,1,34,-10.21,-6.37,1,1,34,20.34,-27.53,1,1,54,55.23,-35.13,1,1,54,95.63,-22.35,1,1,54,106.46,-0.81,1,1,54,98.88,8.92,1,1,54,75.04,20.9,1,1,54,32.47,42.3,1,1,54,13.13,25.55,1,1,34,86.12,-3.38,1],"hull":15}},"Layer 50":{"greengirl/Layer 50":{"type":"mesh","uvs":[0.19275,1,0.34954,0.91097,0.51438,0.83436,0.73751,0.80973,0.93049,0.7468,1,0.68114,1,0.44309,0.96064,0.23789,0.95863,0,0.81189,0,0.60484,0.02994,0.41387,0.1175,0.21888,0.21873,0.08218,0.34733,0,0.47593,0.01384,0.6784,0.07213,0.7167,0.07816,0.88908,0.08017,0.99305,0.19074,0.52791,0.38975,0.37196,0.69731,0.21873,0.26913,0.7085,0.48824,0.54159,0.77168,0.48687],"triangles":[1,0,17,0,18,17,17,22,1,1,22,2,17,16,22,22,23,2,2,23,3,3,24,4,3,23,24,4,24,5,22,16,19,16,15,19,22,19,23,24,6,5,15,14,19,19,20,23,23,20,21,23,21,24,21,20,11,14,13,19,20,13,12,20,19,13,24,7,6,7,21,9,9,8,7,7,24,21,11,10,21,20,12,11,21,10,9],"vertices":[1,5,-53.54,5.89,1,1,5,-39.91,-3.66,1,1,5,-26.6,-14.36,1,1,5,-13.4,-31.88,1,1,5,0.55,-45.43,1,1,5,8.19,-48.66,1,1,5,22.67,-39.48,1,1,5,33.08,-28.32,1,1,5,47.45,-18.99,1,1,5,39.75,-6.84,1,1,5,27.07,9.15,1,1,5,11.73,21.58,1,1,5,-4.66,33.83,1,1,5,-19.65,40.19,1,1,5,-31.78,42.04,1,1,5,-43.37,33.09,1,1,5,-42.64,26.79,1,1,5,-52.81,19.65,1,1,5,-59.03,15.47,1,1,5,-24.94,24.24,1,1,5,-5.01,13.78,1,1,5,20.44,-5.78,1,1,5,-31.81,10.79,1,1,5,-10.17,-0.91,1,1,5,8.03,-22.27,1],"hull":19}},"Layer 51":{"greengirl/Layer 51":{"type":"mesh","uvs":[0.26554,0.99083,0.41427,0.83591,0.58387,0.67716,0.73913,0.62361,0.82262,0.60639,0.95454,0.48549,1,0.44382,1,0.25256,0.97657,0.08425,0.90742,0,0.71173,0,0.50951,0.01922,0.42079,0.15693,0.26946,0.32333,0.12595,0.48399,0,0.61596,0,0.82061,0.04506,0.93345,0.12334,1,0.12203,0.83208,0.23554,0.70203,0.37644,0.52606,0.50299,0.35202,0.64389,0.23917,0.80044,0.24108,0.93873,0.33671],"triangles":[23,11,10,12,11,23,24,10,9,24,9,8,23,10,24,24,8,7,25,24,7,22,12,23,13,12,22,25,7,6,5,25,6,21,13,22,14,13,21,4,24,25,4,25,5,3,23,24,3,24,4,22,23,3,2,21,22,3,2,22,20,14,21,15,14,20,19,16,15,20,19,15,1,21,2,20,21,1,17,16,19,0,20,1,19,20,0,18,17,19,0,18,19],"vertices":[102.06,25.5,74.51,25.12,44.15,26.22,21.72,34.99,10.34,40.7,-13.13,41.77,-21.22,42.13,-32.41,25.92,-39.34,9.64,-35.68,-3.43,-11.36,-20.22,14.89,-35.93,33.97,-31.87,62.52,-30.75,89.75,-29.44,113.12,-29.06,125.1,-11.71,126.1,1.72,120.27,14.07,110.61,-0.27,88.89,-1.56,61.09,-4.39,35.17,-8.28,11.06,-5.76,-8.28,7.83,-19.87,27.8],"hull":19}},"Layer 52":{"greengirl/Layer 52":{"type":"mesh","uvs":[0.98928,0.94421,0.90069,0.99182,0.79112,0.98889,0.69087,0.9325,0.57897,0.94568,0.46939,0.89588,0.42276,0.8058,0.40178,0.70693,0.36681,0.62345,0.3062,0.61979,0.26656,0.65274,0.12785,0.66885,0,0.53044,0,0.48357,0.02936,0.45666,0.05034,0.39661,0.10979,0.37025,0.12611,0.34901,0.08531,0.29116,0.11562,0.27065,0,0.10807,0,0.06559,0.11912,0.03777,0.28231,0.01067,0.41637,0.00115,0.50729,0.00335,0.60404,0.12125,0.66582,0.25161,0.73809,0.39295,0.75907,0.46838,0.74509,0.53136,0.67864,0.55626,0.62502,0.5526,0.6087,0.50573,0.56091,0.5504,0.65183,0.6002,0.8092,0.65659,0.94791,0.71738,0.93729,0.75785,0.98391,0.80398,1,0.87795,0.91281,0.90212,0.78808,0.82083,0.64936,0.741,0.54329,0.64506,0.46402,0.57769,0.38009,0.47296,0.35442,0.3313,0.27049,0.31079,0.11895,0.48655,0.20288,0.51658,0.23785,0.5759,0.50945,0.48802,0.46982,0.44994,0.40921,0.38915,0.45234,0.28516,0.43835,0.33203,0.47798,0.40233,0.53393,0.4243,0.53976,0.46824,0.58755,0.46824],"triangles":[20,21,22,19,20,22,55,24,25,55,25,26,55,26,27,23,24,55,19,22,48,22,23,47,22,47,48,55,47,23,56,47,55,17,19,48,18,19,17,54,47,56,58,57,55,27,58,55,56,55,57,54,56,57,28,58,27,53,54,57,53,57,58,60,59,58,53,58,59,28,60,58,33,60,28,46,47,54,46,54,53,50,49,16,15,16,49,14,15,49,13,14,49,52,53,59,29,33,28,59,60,33,52,59,33,50,17,48,50,16,17,46,50,48,46,48,47,12,13,49,29,31,33,34,52,33,31,32,33,29,30,31,51,50,46,45,46,53,45,53,52,45,52,34,9,51,46,8,9,46,45,8,46,44,45,34,44,34,35,10,51,9,49,50,51,10,49,51,11,49,10,12,49,11,7,8,45,7,45,44,43,44,35,43,35,36,38,36,37,6,7,44,6,44,43,42,43,36,42,36,38,5,6,43,41,42,38,41,38,39,41,39,40,3,43,42,4,5,43,0,41,40,3,4,43,2,42,41,3,42,2,1,2,41,1,41,0],"vertices":[-28.34,-10.49,-29.46,9.18,-17.61,23.43,4.72,27.71,13.36,44.91,35.24,51.52,59.29,43.11,82.6,29.81,104.04,20.9,111.03,28.46,108.04,39.16,118.8,60.43,161.51,55.06,171.54,47.42,174.29,39.08,184.99,26.47,184.55,14.18,187.42,8.53,203.98,4.58,205.26,-2.84,251.89,-13.79,260.98,-20.72,254.74,-41.27,243.82,-67.62,232.13,-87.2,222.35,-99.06,187.21,-92.85,152.99,-79.91,115.34,-66.58,97.05,-57.11,85.01,-44.96,86.49,-31.97,92.76,-25.36,104.46,-30.8,99.8,-17.1,79.83,-21.2,51.65,-33.17,24.43,-41.91,16.86,-33.88,2.21,-32.63,-15.26,-22.74,-11.5,-7.07,18.66,-3.56,49.95,2.08,81.34,0.7,103.88,0.38,134.88,-5.41,167.83,-25.05,180.81,-17.11,158.72,31.91,143.7,25.52,127.42,30.49,118.42,-20.35,130.62,-21.23,149.84,-22.99,167.67,-45.74,159.08,-36.22,139.97,-30.08,129.54,-34.03,119.54,-27.65,114.65,-34.07],"hull":41}},"Layer 53":{"greengirl/Layer 53":{"type":"mesh","uvs":[0.51751,0.71729,0.70702,0.64498,0.79353,0.6482,0.83318,0.67072,0.91788,0.81551,0.97556,0.96351,1,0.91846,1,0.60638,0.96655,0.47768,0.95573,0.34577,0.85841,0.39081,0.82417,0.3715,0.71423,0.17846,0.64609,0.09618,0.56644,0,0.44929,0,0.21139,0,0.06,0.10124,0,0.18168,0,0.41333,0.10866,0.54524,0.33214,0.59029,0.40784,0.74151,0.09604,0.27498,0.34836,0.27176,0.48353,0.37794,0.62411,0.46159,0.74847,0.47768,0.853,0.51307,0.91969,0.62246,0.97015,0.7962,0.41799,0.54861,0.50929,0.13951],"triangles":[5,4,6,4,30,6,30,7,6,4,3,30,3,29,30,30,29,7,3,2,29,29,2,28,7,29,8,29,28,8,28,27,10,28,10,8,10,9,8,22,31,0,22,21,31,0,26,1,0,31,26,28,2,27,2,1,27,1,26,27,31,21,24,21,20,24,31,25,26,31,24,25,19,23,20,20,23,24,10,27,11,27,26,11,13,12,26,26,12,11,32,13,25,26,25,13,19,18,23,25,24,32,18,17,23,24,23,16,23,17,16,24,15,32,24,16,15,32,14,13,32,15,14],"vertices":[1,38,99.99,-43.93,1,1,38,143.06,-25.87,1,2,38,163.62,-22.43,0.66667,52,6.8,-22.7,0.33333,2,38,173.58,-23.64,0.33333,52,15.47,-17.66,0.66667,1,52,43.67,-15.68,1,1,38,214.63,-56.12,1,1,52,67.26,-10.35,1,1,52,36.05,17.96,1,1,52,17.76,23.66,1,1,52,2.82,33.69,1,2,38,172.54,14.62,0.33333,52,-8.44,12.23,0.66667,2,38,163.95,15.65,0.66667,52,-15.91,7.87,0.33333,1,38,133.08,36.34,1,1,38,114.88,44.21,1,1,38,93.61,53.41,1,1,38,65.87,48.17,1,1,38,9.53,37.54,1,1,38,-23.79,17.34,1,1,38,-35.98,3.99,1,1,38,-30.18,-26.74,1,1,38,-1.14,-39.39,1,1,38,52.91,-35.37,1,1,38,74.62,-52.05,1,1,38,-10.9,-4.1,1,1,38,48.77,7.61,1,1,38,83.44,-0.43,1,1,38,118.83,-5.25,1,1,38,148.68,-1.82,1,1,52,2.91,0.18,1,1,52,24.65,2.16,1,1,52,50.2,-4.59,1,1,38,72.2,-26.01,1,1,38,83.57,32.35,1],"hull":23}},"Layer 54":{"greengirl/Layer 54":{"type":"mesh","uvs":[0.34556,0.98527,0.37607,0.87713,0.50003,0.77895,0.6168,0.71608,0.78346,0.70476,0.8593,0.74503,0.97119,0.78894,0.97662,0.74288,1,0.62744,0.99101,0.47729,0.95613,0.24239,0.94604,0.1602,0.86478,0.08965,0.75564,0.03124,0.61107,0.00725,0.4202,0.0421,0.22523,0.15252,0.07029,0.25023,0,0.4009,0.01439,0.52431,0.07074,0.65594,0.14932,0.83781,0.2405,1,0.19825,0.86318,0.27953,0.70661,0.40125,0.6261,0.58318,0.56143,0.76732,0.51935,0.91419,0.57684,0.10782,0.43913,0.16661,0.3212,0.26485,0.24104,0.50358,0.17972,0.6956,0.15892,0.85325,0.19656],"triangles":[33,14,13,33,13,12,32,15,14,32,14,33,34,33,12,34,12,11,31,16,15,31,15,32,34,11,10,30,17,16,31,30,16,18,17,30,29,18,30,27,33,34,28,27,34,34,9,28,19,18,29,26,32,33,26,33,27,31,32,26,10,9,34,25,31,26,30,31,25,29,30,25,28,9,8,20,19,29,24,20,29,4,27,28,3,26,27,25,24,29,4,3,27,25,26,3,7,28,8,5,4,28,7,5,28,2,25,3,24,25,2,6,5,7,21,20,24,23,21,24,1,24,2,23,24,1,0,23,1,22,23,0,21,23,22],"vertices":[75.37,-42.75,62.17,-34.6,53.84,-14.33,49.92,3.66,54.73,26.37,62.95,35,73.02,48.31,67.11,50.77,52.67,58.24,32.4,62.69,-0.11,66.86,-11.41,68.61,-23.85,60.39,-35.75,48,-44.41,29.57,-47.02,2.73,-39.75,-27.5,-32.65,-51.9,-15.31,-66.97,1.62,-69.69,21.23,-67.11,48.36,-63.44,73.35,-57.35,53.58,-57.85,35.87,-41.09,29.8,-21.78,28.11,4.98,29.5,31.19,42.7,48.67,-6.15,-53.99,-19.58,-41.69,-26.5,-25.53,-25.59,8.7,-21.07,35.16,-10.1,54.83],"hull":23}},"Layer 55":{"greengirl/Layer 55":{"x":21.02,"y":-2.09,"rotation":88.99,"width":35,"height":51}}}},"animations":{"animation":{"bones":{"core":{"rotate":[{"time":0,"angle":-0.45}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":0,"y":43.01,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0,"y":0}]},"bone16":{"rotate":[{"time":0,"angle":-11.33,"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"angle":-12.62,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":9.27,"curve":[0.245,0,0.711,0.83]},{"time":1.6,"angle":-11.33}]},"Layer 53":{"rotate":[{"time":0,"angle":5.51,"curve":[0.375,0.62,0.716,1]},{"time":0.1667,"angle":8.1,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":-11.85,"curve":[0.243,0,0.68,0.71]},{"time":1.6,"angle":5.51}]},"bone17":{"rotate":[{"time":0,"angle":6.31,"curve":[0.382,0.58,0.731,1]},{"time":0.2333,"angle":0.42,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":-14.67,"curve":[0.243,0,0.655,0.63]},{"time":1.6,"angle":6.31}]},"bone12":{"rotate":[{"time":0,"angle":-10.82,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":-11.64,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":-6.64,"curve":[0.25,0,0.75,1]},{"time":1.6,"angle":-10.82}],"translate":[{"time":0,"x":-5.75,"y":-0.04,"curve":[0.369,0.63,0.706,1]},{"time":0.1333,"x":-6.6,"y":-0.05,"curve":[0.25,0,0.75,1]},{"time":0.9333,"x":3.66,"y":0.03,"curve":[0.244,0,0.694,0.77]},{"time":1.6,"x":-5.75,"y":-0.04}]},"bone13":{"rotate":[{"time":0,"angle":-1.78,"curve":[0.375,0.62,0.716,1]},{"time":0.1667,"angle":-2.5,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":11,"curve":[0.243,0,0.68,0.71]},{"time":1.6,"angle":-1.78}]},"bone14":{"rotate":[{"time":0,"angle":5.13,"curve":[0.323,0.3,0.665,0.66]},{"time":0.3667,"angle":-7.36,"curve":[0.25,0,0.75,1]},{"time":1.1,"angle":11.5,"curve":[0.266,0,0.618,0.42]},{"time":1.6,"angle":5.13}]},"bone15":{"rotate":[{"time":0,"angle":8.03,"curve":[0.375,0.5,0.75,1]},{"time":0.4,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":16.06,"curve":[0.25,0,0.625,0.5]},{"time":1.6,"angle":8.03}]},"Layer 23":{"rotate":[{"time":0,"angle":-14.06,"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"angle":-13.62,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-24.04,"curve":[0.245,0,0.711,0.83]},{"time":1.6,"angle":-14.06}],"translate":[{"time":0,"x":11.11,"y":4.09,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":10.41,"y":12.27,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":11.11,"y":4.09}]},"Layer 33":{"rotate":[{"time":0,"angle":20.86,"curve":[0.38,0.59,0.727,1]},{"time":0.2,"angle":22.97,"curve":[0.25,0,0.75,1]},{"time":1,"angle":12.55,"curve":[0.242,0,0.663,0.65]},{"time":1.6,"angle":20.86}]},"Layer 34":{"rotate":[{"time":0,"angle":17.01,"curve":[0.38,0.53,0.745,1]},{"time":0.3667,"angle":21.31,"curve":[0.25,0,0.75,1]},{"time":1.1,"angle":10.88,"curve":[0.246,0,0.633,0.54]},{"time":1.6,"angle":17.01}]},"Layer 35":{"rotate":[{"time":0,"angle":-2.36,"curve":[0.363,0.44,0.755,1]},{"time":0.4667,"angle":4.23,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":-6.19,"curve":[0.258,0,0.619,0.45]},{"time":1.6,"angle":-2.36}]},"Layer 36":{"rotate":[{"time":0,"angle":-4.46,"curve":[0.329,0.32,0.758,1]},{"time":0.6,"angle":4.23,"curve":[0.242,0,0.667,0.67]},{"time":1.2,"angle":-32.61,"curve":[0.379,0.6,0.724,1]},{"time":1.6,"angle":-4.46}]},"Layer 37":{"rotate":[{"time":0,"angle":-44.58,"curve":[0.288,0.16,0.755,1]},{"time":0.7667,"angle":-1.91,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-45.66,"curve":[0.306,0,0.641,0.36]},{"time":1.6,"angle":-44.58}]},"Layer 24":{"rotate":[{"time":0,"angle":5.48,"curve":[0.25,0,0.75,1]},{"time":0.8,"angle":349.94,"curve":[0.25,0,0.75,1]},{"time":1.6,"angle":5.48}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.93,"y":10.9,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0,"y":0}]},"Layer 29":{"rotate":[{"time":0,"angle":9.83,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":11.33},{"time":0.9333,"angle":-4.22,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"angle":9.83}]},"Layer 30":{"rotate":[{"time":0,"angle":1.07,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"angle":5.48,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":-10.06,"curve":[0.243,0,0.649,0.6]},{"time":1.6,"angle":1.07}]},"Layer 55":{"rotate":[{"time":0,"angle":-2.29,"curve":[0.375,0.5,0.75,1]},{"time":0.4,"angle":5.48},{"time":1.2,"angle":-10.06,"curve":[0.25,0,0.625,0.5]},{"time":1.6,"angle":-2.29}]},"Layer 32":{"rotate":[{"time":0,"angle":-5.65,"curve":[0.351,0.4,0.757,1]},{"time":0.5333,"angle":5.48},{"time":1.3,"angle":-10.06,"curve":[0.265,0,0.618,0.43]},{"time":1.6,"angle":-5.65}]},"Layer 22":{"rotate":[{"time":0,"angle":3.83,"curve":[0.289,0.17,0.755,1]},{"time":0.7333,"angle":-8.79,"curve":[0.25,0,0.75,1]},{"time":1.5,"angle":-355.61,"curve":[0.305,0,0.64,0.36]},{"time":1.6,"angle":3.83}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.7333,"x":-0.34,"y":7.69,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0,"y":0}]},"Layer 25":{"rotate":[{"time":0,"angle":4.09,"curve":[0.352,0.65,0.687,1]},{"time":0.0333,"angle":4.39},{"time":0.8333,"angle":-8.79,"curve":[0.246,0,0.723,0.88]},{"time":1.6,"angle":4.09}]},"Layer 26":{"rotate":[{"time":0,"angle":2.2,"curve":[0.378,0.61,0.722,1]},{"time":0.2,"angle":4.39,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":-8.79,"curve":[0.242,0,0.671,0.68]},{"time":1.6,"angle":2.2}]},"Layer 27":{"rotate":[{"time":0,"angle":-0.46,"curve":[0.381,0.55,0.742,1]},{"time":0.3333,"angle":19.32},{"time":1.1,"angle":-8.79,"curve":[0.245,0,0.637,0.56]},{"time":1.6,"angle":-0.46}]},"Layer 28":{"rotate":[{"time":0,"angle":-21.57,"curve":[0.367,0.46,0.754,1]},{"time":0.4333,"angle":-13.82,"curve":[0.25,0,0.75,1]},{"time":1.2333,"angle":-27,"curve":[0.255,0,0.62,0.47]},{"time":1.6,"angle":-21.57}]},"Layer 42":{"rotate":[{"time":0,"angle":-2.65,"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"angle":-2.81,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":3.92,"curve":[0.245,0,0.711,0.83]},{"time":1.6,"angle":-2.65}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.21,"y":-2.55,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0,"y":0}]},"bone27":{"rotate":[{"time":0,"angle":-2.17,"curve":[0.378,0.61,0.722,1]},{"time":0.2,"angle":-2.81,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":1.03,"curve":[0.242,0,0.671,0.68]},{"time":1.6,"angle":-2.17}]},"bone28":{"rotate":[{"time":0,"angle":-7.49,"curve":[0.382,0.56,0.739,1]},{"time":0.2667,"angle":-11.59,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":1.03,"curve":[0.244,0,0.643,0.58]},{"time":1.6,"angle":-7.49}]},"bone29":{"rotate":[{"time":0,"angle":-0.89,"curve":[0.375,0.5,0.75,1]},{"time":0.4,"angle":-2.81,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":1.03,"curve":[0.25,0,0.625,0.5]},{"time":1.6,"angle":-0.89}]},"bone30":{"rotate":[{"time":0,"angle":-3.01,"curve":[0.357,0.42,0.756,1]},{"time":0.5333,"angle":-23.49,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":6.87,"curve":[0.261,0,0.618,0.44]},{"time":1.6,"angle":-3.01}]},"Layer 41":{"rotate":[{"time":0,"angle":-2.2,"curve":[0.352,0.65,0.687,1]},{"time":0.0333,"angle":-2.47,"curve":[0.25,0,0.75,1]},{"time":0.8333,"angle":9.7,"curve":[0.246,0,0.723,0.88]},{"time":1.6,"angle":-2.2}],"translate":[{"time":0,"x":0.42,"y":2.73,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.14,"y":-1.7,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0.42,"y":2.73}]},"bone21":{"rotate":[{"time":0,"angle":-0.89,"curve":[0.375,0.62,0.716,1]},{"time":0.1667,"angle":-2.47,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":9.7,"curve":[0.243,0,0.68,0.71]},{"time":1.6,"angle":-0.89}]},"bone22":{"rotate":[{"time":0,"angle":1.49,"curve":[0.382,0.56,0.739,1]},{"time":0.2667,"angle":-2.47,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":9.7,"curve":[0.244,0,0.643,0.58]},{"time":1.6,"angle":1.49}]},"bone23":{"rotate":[{"time":0,"angle":4.15,"curve":[0.372,0.48,0.752,1]},{"time":0.4333,"angle":-2.47,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":9.7,"curve":[0.252,0,0.622,0.48]},{"time":1.6,"angle":4.15}]},"Layer 40":{"rotate":[{"time":0,"angle":0.33,"curve":[0.375,0.62,0.716,1]},{"time":0.1667,"angle":-1.38,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":11.77,"curve":[0.243,0,0.68,0.71]},{"time":1.6,"angle":0.33}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.14,"y":-1.7,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0,"y":0}]},"bone24":{"rotate":[{"time":0,"angle":3.46,"curve":[0.381,0.55,0.742,1]},{"time":0.3333,"angle":-1.38,"curve":[0.25,0,0.75,1]},{"time":1.1,"angle":11.77,"curve":[0.245,0,0.637,0.56]},{"time":1.6,"angle":3.46}]},"bone25":{"rotate":[{"time":0,"angle":6.93,"curve":[0.363,0.44,0.755,1]},{"time":0.4667,"angle":-1.38,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":11.77,"curve":[0.258,0,0.619,0.45]},{"time":1.6,"angle":6.93}]},"bone26":{"rotate":[{"time":0,"angle":9.58,"curve":[0.329,0.32,0.758,1]},{"time":0.6,"angle":-1.38,"curve":[0.25,0,0.75,1]},{"time":1.4,"angle":11.77,"curve":[0.278,0,0.622,0.39]},{"time":1.6,"angle":9.58}]},"bone31":{"rotate":[{"time":0,"angle":1.34,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":33.34,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"angle":1.34}]},"bone32":{"rotate":[{"time":0,"angle":3.38,"curve":[0.382,0.58,0.731,1]},{"time":0.2333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":13.94,"curve":[0.243,0,0.655,0.63]},{"time":1.6,"angle":3.38}]},"bone33":{"rotate":[{"time":0,"angle":1.34,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":13.94,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"angle":1.34}]},"bone34":{"rotate":[{"time":0,"angle":3.96,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":13.94,"curve":[0.243,0,0.649,0.6]},{"time":1.6,"angle":3.96}]},"Layer 48":{"rotate":[{"time":0,"angle":1.46,"curve":[0.378,0.61,0.722,1]},{"time":0.2,"angle":0},{"time":0.9667,"angle":15.19,"curve":[0.242,0,0.671,0.68]},{"time":1.6,"angle":1.46}],"translate":[{"time":0,"x":0.54,"y":4.6,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.46,"y":-5.6,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0.54,"y":4.6}]},"bone2":{"rotate":[{"time":0,"angle":-25.17,"curve":[0.306,0.23,0.756,1]},{"time":0.6667,"angle":-17.53,"curve":[0.25,0,0.75,1]},{"time":1.4667,"angle":-25.86,"curve":[0.294,0,0.631,0.37]},{"time":1.6,"angle":-25.17}]},"bone3":{"rotate":[{"time":0,"angle":38.36,"curve":[0.381,0.54,0.744,1]},{"time":0.4333,"angle":40.13,"curve":[0.25,0,0.75,1]},{"time":1,"angle":29.55,"curve":[0.246,0,0.634,0.54]},{"time":1.6,"angle":38.36}]},"bone4":{"rotate":[{"time":0,"angle":20.83,"curve":[0.351,0.4,0.757,1]},{"time":0.5333,"angle":34.35,"curve":[0.25,0,0.75,1]},{"time":1.3,"angle":15.97,"curve":[0.265,0,0.618,0.43]},{"time":1.6,"angle":20.83}]},"bone5":{"rotate":[{"time":0,"angle":23.64,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"angle":26,"curve":[0.252,0,0.623,0.49]},{"time":0.6333,"angle":36.66,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":14.88,"curve":[0.25,0,0.75,1]},{"time":1.6,"angle":23.64}]},"bone6":{"rotate":[{"time":0,"angle":-16.96,"curve":[0.311,0.25,0.757,1]},{"time":0.6667,"angle":14.64,"curve":[0.25,0,0.75,1]},{"time":1.4333,"angle":-20.33,"curve":[0.29,0,0.629,0.38]},{"time":1.6,"angle":-16.96}]},"bone7":{"rotate":[{"time":0,"angle":-41.77,"curve":[0.25,0,0.625,0.5]},{"time":0.4,"angle":-26.81,"curve":[0.375,0.5,0.75,1]},{"time":0.8,"angle":1.57,"curve":[0.25,0,0.75,1]},{"time":1.4,"angle":-40.36,"curve":[0.329,0.32,0.665,0.66]},{"time":1.6,"angle":-41.77}]},"bone8":{"rotate":[{"time":0,"angle":-44.49,"curve":[0.311,0.25,0.757,1]},{"time":0.6667,"angle":-7.95,"curve":[0.25,0,0.75,1]},{"time":1.3667,"angle":-46.02,"curve":[0.29,0,0.629,0.38]},{"time":1.6,"angle":-44.49}]},"Layer 51":{"rotate":[{"time":0,"angle":-0.42,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":0.43,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":-8.43,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"angle":-0.42}],"translate":[{"time":0,"x":-0.52,"y":0.82,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"x":-1.24,"y":1.96,"curve":[0.25,0,0.75,1]},{"time":0.9333,"x":6.2,"y":-9.78,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"x":-0.52,"y":0.82}]},"Layer 52":{"rotate":[{"time":0,"angle":-2.08,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"angle":0.43,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":-8.43,"curve":[0.243,0,0.649,0.6]},{"time":1.6,"angle":-2.08}],"translate":[{"time":0,"x":-1.63,"y":0.51,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.0333,"x":-5.75,"y":1.79,"curve":[0.243,0,0.649,0.6]},{"time":1.6,"x":-1.63,"y":0.51}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1.043,"y":1.118,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":1}]},"bone18":{"rotate":[{"time":0,"angle":-4,"curve":[0.375,0.5,0.75,1]},{"time":0.4,"angle":0.43,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":-8.43,"curve":[0.25,0,0.625,0.5]},{"time":1.6,"angle":-4}]},"bone19":{"rotate":[{"time":0,"angle":-2.08,"curve":[0.382,0.57,0.735,1]},{"time":0.2667,"angle":0.43,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":-12.03,"curve":[0.243,0,0.649,0.6]},{"time":1.6,"angle":-2.08}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1.15,"y":1.15,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":1}]},"Layer 49":{"rotate":[{"time":0,"angle":5.86,"curve":[0.371,0.62,0.71,1]},{"time":0.1333,"angle":7.39,"curve":[0.25,0,0.75,1]},{"time":0.9333,"angle":-8.43,"curve":[0.243,0,0.689,0.75]},{"time":1.6,"angle":5.86}],"translate":[{"time":0,"x":2.73,"y":-4.3,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.99,"y":1.56,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":2.73,"y":-4.3}]},"Layer 47":{"rotate":[{"time":0,"angle":2.99}],"translate":[{"time":0,"x":-0.88,"y":10.38,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-3.55,"y":-5.72,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":-0.88,"y":10.38}],"scale":[{"time":0,"x":1,"y":0.677},{"time":0.8,"x":1.059,"y":0.998},{"time":1.6,"x":1,"y":0.677}]},"Layer 45":{"translate":[{"time":0,"x":0.25,"y":13.36,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.64,"y":-3.18,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0.25,"y":13.36}],"scale":[{"time":0,"x":1,"y":0.885,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1,"y":0.972,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":0.885}]},"Layer 43":{"translate":[{"time":0,"x":1.26,"y":12.39,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.56,"y":-4.2,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1.26,"y":12.39}],"scale":[{"time":0,"x":1,"y":0.944,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1,"y":1.036,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":0.944}]},"Layer 44":{"translate":[{"time":0,"x":0.21,"y":2.3,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1.5,"y":-3.27,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0.21,"y":2.3}],"scale":[{"time":0,"x":1,"y":0.644,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1,"y":1.336,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":0.644}]},"Layer 46":{"rotate":[{"time":0,"angle":-2.08}],"translate":[{"time":0,"x":-1.77,"y":3.22,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-1.41,"y":-6.23,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":-1.77,"y":3.22}],"scale":[{"time":0,"x":1,"y":0.953,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":1,"y":1.038,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":1,"y":0.953}]},"Layer 38":{"rotate":[{"time":0,"angle":0.09,"curve":[0.381,0.55,0.742,1]},{"time":0.3333,"angle":1.46,"curve":[0.25,0,0.75,1]},{"time":1.1,"angle":-2.26,"curve":[0.245,0,0.637,0.56]},{"time":1.6,"angle":0.09}]},"Layer 39":{"translate":[{"time":0,"x":0.48,"y":4.77,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":-0.01,"y":-5.28,"curve":[0.25,0,0.75,1]},{"time":1.6,"x":0.48,"y":4.77}]},"bone20":{"translate":[{"time":0,"x":-0.71,"y":1.22,"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"x":-0.61,"y":1.13,"curve":[0.25,0,0.75,1]},{"time":0.8667,"x":-2.94,"y":3.38,"curve":[0.245,0,0.711,0.83]},{"time":1.6,"x":-0.71,"y":1.22}]},"bone9":{"rotate":[{"time":0,"angle":-1.86,"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"angle":-1.65,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-6.58,"curve":[0.245,0,0.711,0.83]},{"time":1.6,"angle":-1.86}]},"bone10":{"rotate":[{"time":0,"angle":4.31,"curve":[0.375,0.62,0.716,1]},{"time":0.1667,"angle":5.29,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":-2.27,"curve":[0.243,0,0.68,0.71]},{"time":1.6,"angle":4.31}]},"bone11":{"rotate":[{"time":0,"angle":1.92,"curve":[0.382,0.58,0.731,1]},{"time":0.2333,"angle":3.12,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":-1.81,"curve":[0.243,0,0.655,0.63]},{"time":1.6,"angle":1.92}]}},"deform":{"default":{"Layer 17":{"greengirl/Layer 17":[{"time":0,"offset":18,"vertices":[-1.46056,-2.64867,-0.93903,-2.87541,-0.79224,-2.42583,-1.03604,-2.33214,-0.80236,-1.8061,-0.52591,-1.18379,-0.29546,-1.26124,-0.37771,-0.85017,-0.2122,-0.90589,0.71578,-0.33487,0.3985,-2.31269,0.83025,-2.19487,0.25613,-3.05596,0.83159,-2.95175,0.80356,-3.66889,-0.33128,-9.90333,2.01435,-9.54624,1.12667,-8.0552,3.26446,-7.4315,2.81971,-5.00569,3.07412,-7.15522,3.3911,-7.37269,0.35655,-1.11018,0.15795,-0.49149,-0.23043,0.71824,-0.42163,1.31397,-0.72432,2.25698,-0.25927,-0.16314,-0.79229,0.13808,-1.21761,0.60668,-1.4337,0.15474,-0.65036,2.65914,-1.58613,2.27204,0.24249,3.70294,0.44181,4.6093,2.3224,5.14004,1.28534,5.22068,0.63811,2.7236,0.10952,2.79527,0.45967,1.96197,0.69936,1.57442,0.39298,1.6773,0.47628,1.07223,0.26764,1.1422,0.19701,0.44361,0.01389,0.04261,0.01815,0.04099,-0.17353,-0.5313,-0.22692,-0.5107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.50227,-1.53795,-1.06452,1.48792,-0.80371,2.25609,-1.37369,4.82561,0.11707,1.43283,-0.55929,-1.81682,-0.47868,-2.27256,-1.43226,-4.63881,0.82731,3.20225,-0.15395,4.65583],"curve":[0.379,0.6,0.724,1]},{"time":0.2,"offset":48,"vertices":[-0.52472,-5.22272,0.02643,-5.24905,0.63858,-2.83392,0.93256,-2.75137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.18732,-7.3273,0.75208,-10.89075,0.75208,-10.89075,1.89096,-10.75192],"curve":[0.25,0,0.75,1]},{"time":1,"offset":18,"vertices":[-7.91776,-14.35858,-5.09052,-15.58777,-4.29477,-13.15057,-5.61642,-12.64264,-4.34966,-9.79095,-2.85097,-6.41742,-1.60172,-6.83728,-2.04759,-4.60883,-1.15032,-4.91089,3.88026,-1.81534,2.16029,-12.5372,4.50082,-11.8985,1.38849,-16.56653,4.50812,-16.00159,4.35615,-19.88925,0.52393,-30.59659,10.80307,-28.54434,3.28452,-31.13876,13.57393,-28.12259,15.28583,-27.13614,16.66498,-38.78885,18.38333,-39.96777,1.93289,-6.01837,0.85623,-2.6644,-1.24918,3.89362,-2.28568,7.12311,-3.92661,12.23523,-1.40553,-0.88437,-4.29504,0.74857,-6.60071,3.28885,-7.77216,0.83884,-3.52562,14.41537,-8.59848,12.31686,1.31456,20.07382,2.39505,24.9873,12.58987,27.86444,6.96793,28.30161,3.45924,14.76477,0.59373,15.15332,2.49191,10.63593,3.79129,8.53503,2.13037,9.09271,2.58192,5.81262,1.4509,6.19196,1.06798,2.40485,0.07532,0.23102,0.09837,0.22223,-0.94072,-2.88019,-1.23016,-2.76855,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.72284,-8.33734,-5.77084,8.0661,-4.35694,12.23041,-7.44684,26.15991,-4.61453,40.16187,-6.3569,38.29953,-5.91992,35.82892,-16.12439,22.38763,4.48489,17.35956,-0.83459,25.2395],"curve":[0.242,0,0.667,0.67]},{"time":1.6,"offset":18,"vertices":[-1.46056,-2.64867,-0.93903,-2.87541,-0.79224,-2.42583,-1.03604,-2.33214,-0.80236,-1.8061,-0.52591,-1.18379,-0.29546,-1.26124,-0.37771,-0.85017,-0.2122,-0.90589,0.71578,-0.33487,0.3985,-2.31269,0.83025,-2.19487,0.25613,-3.05596,0.83159,-2.95175,0.80356,-3.66889,-0.33128,-9.90333,2.01435,-9.54624,1.12667,-8.0552,3.26446,-7.4315,2.81971,-5.00569,3.07412,-7.15522,3.3911,-7.37269,0.35655,-1.11018,0.15795,-0.49149,-0.23043,0.71824,-0.42163,1.31397,-0.72432,2.25698,-0.25927,-0.16314,-0.79229,0.13808,-1.21761,0.60668,-1.4337,0.15474,-0.65036,2.65914,-1.58613,2.27204,0.24249,3.70294,0.44181,4.6093,2.3224,5.14004,1.28534,5.22068,0.63811,2.7236,0.10952,2.79527,0.45967,1.96197,0.69936,1.57442,0.39298,1.6773,0.47628,1.07223,0.26764,1.1422,0.19701,0.44361,0.01389,0.04261,0.01815,0.04099,-0.17353,-0.5313,-0.22692,-0.5107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.50227,-1.53795,-1.06452,1.48792,-0.80371,2.25609,-1.37369,4.82561,0.11707,1.43283,-0.55929,-1.81682,-0.47868,-2.27256,-1.43226,-4.63881,0.82731,3.20225,-0.15395,4.65583]}]},"Layer 20":{"greengirl/Layer 20":[{"time":0,"offset":2,"vertices":[-3.84509,3.04495,-3.84509,3.04495,0,0,0,0,0,0,0,0,-1.45679,2.66055,-2.17706,2.11212,-1.45679,2.66055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.91168,2.25501,-3.89571,-2.89395,-4.68805,1.04749,-10.96425,3.72263,-10.96425,3.72263,-9.78099,9.39819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.18481,2.37912,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.17017,13.72693,-9.94608,11.29434,-5.27426,15.28296,-13.5317,1.99728,-2.42673,-0.01804,0,0,-2.33276,-6.34492,-0.49484,-8.46092,-2.33075,4.25699,-0.3866,-4.83822,-6.06836,9.427,-3.81548,12.71786,0,0,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,-1.2309,-8.2074,-0.36212,-4.55062,0.04614,-9.88201,1.521,-9.75315,0.29956,-10.55579,1.87671,-10.37905,0.7041,-7.38137,1.77979,-7.1805,-1.83112,-5.15726,1.0303,-4.93569,1.0303,-4.93569,1.0303,-4.93569,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.77362,-1.52499],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[0.89972,-3.23526,0.61926,-4.9588,-1.43616,-0.7785,4.52402,0.00687,3.13239,-3.14713,4.06793,-1.78073,3.44238,-2.80453,6.95886,-4.75769,8.21167,-1.74701,7.4133,-6.21695,5.14514,1.42157,2.70074,1.24009,2.51733,0.14237,0,0,0,0,0,0,6.05042,7.65581,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.78897,-8.7782,-0.1496,-3.14676,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.6062,-7.27115,14.66742,-8.86288,7.65735,-2.19165,7.76709,0.83011,2.28528,-2.05609,1.25526,3.05646,0,0,0,0,0,0,3.61234,12.28757,8.17758,-12.32846,2.29187,14.57617,0,0,0,0,0,0,-2.1181,1.11093,-3.77765,-11.65225,-3.35062,-15.58774,-3.35062,-15.58774,-3.44952,-9.59506,0.33951,13.98836,1.71121,8.5667,1.71121,8.5667,0.96915,8.68157,1.71121,8.5667,0.96915,8.68157,4.80612,7.95748,4.61627,7.92957,-0.67264,7.71938,2.50757,10.08362,1.67175,6.7224,1.67175,6.7224,1.1145,4.48164,0,0,0,0,0,0,0,0,0,0,0,0,12.50021,-7.99857,9.94513,-10.99405,-2.88666,11.77863,-2.16034,9.01598,-2.70435,5.53091,-2.50931,5.62189,13.8244,-11.54279,17.2142,-5.29437,15.27383,-9.54269,7.2818,-6.07468],"curve":[0.25,0,0.75,1]},{"time":1.6,"offset":2,"vertices":[-3.84509,3.04495,-3.84509,3.04495,0,0,0,0,0,0,0,0,-1.45679,2.66055,-2.17706,2.11212,-1.45679,2.66055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.91168,2.25501,-3.89571,-2.89395,-4.68805,1.04749,-10.96425,3.72263,-10.96425,3.72263,-9.78099,9.39819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.18481,2.37912,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.17017,13.72693,-9.94608,11.29434,-5.27426,15.28296,-13.5317,1.99728,-2.42673,-0.01804,0,0,-2.33276,-6.34492,-0.49484,-8.46092,-2.33075,4.25699,-0.3866,-4.83822,-6.06836,9.427,-3.81548,12.71786,0,0,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,1.66577,7.81281,-1.2309,-8.2074,-0.36212,-4.55062,0.04614,-9.88201,1.521,-9.75315,0.29956,-10.55579,1.87671,-10.37905,0.7041,-7.38137,1.77979,-7.1805,-1.83112,-5.15726,1.0303,-4.93569,1.0303,-4.93569,1.0303,-4.93569,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.77362,-1.52499]}]},"Layer 38":{"greengirl/Layer 38":[{"time":0,"vertices":[-0.3941,3.0455,-0.65564,-0.11169,-0.07916,-1.90866,-0.35059,-2.2934,-0.35059,-2.2934,-0.87506,1.2045,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.47571,3.4249,-2.08936,8.44326,-1.3576,2.31468,0.67944,5.86342,0.26154,3.15719,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-3.5072,6.30627],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[0.18044,2.17775,0,0,0.77757,1.64827,3.43955,0.0875,2.1584,0.62085,0.00375,2.08985,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4.04517,-2.3273,-1.18793,-2.64895,-2.50464,-0.49727,0,0,0,0,-7.18187,-7.39017,-4.04887,-7.06541,-12.15204,-11.74069,-3.74436,-3.30613,0.18044,2.17775,-1.44626,-6.84683,-1.44626,-6.84683,-1.44626,-6.84683,-1.44626,-6.84683,-1.44626,-6.84683,-1.44626,-6.84683],"curve":[0.3,0.21,0.756,1]},{"time":1.6,"vertices":[-0.3941,3.0455,-0.65564,-0.11169,-0.07916,-1.90866,-0.35059,-2.2934,-0.35059,-2.2934,-0.87506,1.2045,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.47571,3.4249,-2.08936,8.44326,-1.3576,2.31468,0.67944,5.86342,0.26154,3.15719,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-0.38251,11.39876,-3.5072,6.30627]}]},"Layer 39":{"greengirl/Layer 39":[{"time":0,"vertices":[0.72095,-1.53905,0.60303,-1.10323,0.33051,-0.30043,0.38782,-0.2204,0.21161,-0.23428,0.29041,-0.11581,0.30719,-0.04946,0.10663,-0.30548,0.22784,-0.22646,-0.18207,-0.79559,-0.28674,-0.93646,-1.32944,-0.66443,-0.56885,-1.37238,-1.4353,-0.66107,-0.65179,-1.43863,-0.43501,-0.19232,-0.83337,-0.35675,-2.10847,-0.91449,-2.99987,-1.302,-0.25385,4.46817,-4.10842,-1.77997,-0.1015,8.00806,-7.48473,-2.85522,-2.6991,13.83512,-2.84735,14.97668,-2.89972,12.56221,-2.73022,15.94765,-2.5827,12.8055,1.23285,-3.78206,1.1394,-3.29427,1.08618,-3.04132,0.96851,-2.54554,0.88867,-2.30583,0.34412,-2.44302,0.28931,-3.16144,-0.24316,6.7618,-3.06488,-6.03351,0.26343,-1.83856,-1.04248,-2.52081,-0.34943,4.32608,-1.79077,-3.95456,-2.42101,-1.06683,-0.26337,4.15234,-3.80872,-1.68073,-0.12805,7.83794,-7.31582,-2.82123,-2.10942,-0.91943,-3.66477,-1.60052],"curve":[0.25,0,0.75,1]},{"time":0.8,"offset":42,"vertices":[-0.20074,-2.42372,2.4258,0.17627,-1.14343,-3.548,-1.07867,-2.78276,-1.07867,-2.78276,-0.21631,-2.30729,-0.10614,-3.14163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.20074,-2.42372,1.59528,1.83691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.20074,-2.42372,2.4258,0.17627],"curve":[0.25,0,0.75,1]},{"time":1.6,"vertices":[0.72095,-1.53905,0.60303,-1.10323,0.33051,-0.30043,0.38782,-0.2204,0.21161,-0.23428,0.29041,-0.11581,0.30719,-0.04946,0.10663,-0.30548,0.22784,-0.22646,-0.18207,-0.79559,-0.28674,-0.93646,-1.32944,-0.66443,-0.56885,-1.37238,-1.4353,-0.66107,-0.65179,-1.43863,-0.43501,-0.19232,-0.83337,-0.35675,-2.10847,-0.91449,-2.99987,-1.302,-0.25385,4.46817,-4.10842,-1.77997,-0.1015,8.00806,-7.48473,-2.85522,-2.6991,13.83512,-2.84735,14.97668,-2.89972,12.56221,-2.73022,15.94765,-2.5827,12.8055,1.23285,-3.78206,1.1394,-3.29427,1.08618,-3.04132,0.96851,-2.54554,0.88867,-2.30583,0.34412,-2.44302,0.28931,-3.16144,-0.24316,6.7618,-3.06488,-6.03351,0.26343,-1.83856,-1.04248,-2.52081,-0.34943,4.32608,-1.79077,-3.95456,-2.42101,-1.06683,-0.26337,4.15234,-3.80872,-1.68073,-0.12805,7.83794,-7.31582,-2.82123,-2.10942,-0.91943,-3.66477,-1.60052]}]},"Layer 40":{"greengirl/Layer 40":[{"time":0,"vertices":[0.86108,9.68364,-3.97559,0.0014,-3.97559,0.0014,-3.78175,-1.22687,-3.97559,0.0014,-3.78175,-1.22687,-3.69251,-1.47253,-3.78175,-1.22687,-3.69251,-1.47253,-3.69251,-1.47253,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.84375,1.01154,-3.84375,1.01154,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.78175,-1.22687,-3.69251,-1.47253,-3.97559,0.0014,-3.78175,-1.22687,-3.69251,-1.47253,0.16833,3.97211,1.01917,15.26762,1.01917,15.26762,1.01917,15.26762,-3.97559,0.0014,-3.78175,-1.22687,-3.78175,-1.22687,-3.69251,-1.47253,-3.69251,-1.47253,-3.84375,1.01154,-3.78175,-1.22687],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[-0.0979,-2.2699,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.26538,2.12212,-0.0979,-2.2699,-0.0979,-2.2699],"curve":[0.25,0,0.75,1]},{"time":1.6,"vertices":[0.86108,9.68364,-3.97559,0.0014,-3.97559,0.0014,-3.78175,-1.22687,-3.97559,0.0014,-3.78175,-1.22687,-3.69251,-1.47253,-3.78175,-1.22687,-3.69251,-1.47253,-3.69251,-1.47253,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.84375,1.01154,-3.84375,1.01154,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.69251,-1.47253,-3.84375,1.01154,-3.78175,-1.22687,-3.69251,-1.47253,-3.97559,0.0014,-3.78175,-1.22687,-3.69251,-1.47253,0.16833,3.97211,1.01917,15.26762,1.01917,15.26762,1.01917,15.26762,-3.97559,0.0014,-3.78175,-1.22687,-3.78175,-1.22687,-3.69251,-1.47253,-3.69251,-1.47253,-3.84375,1.01154,-3.78175,-1.22687]}]},"Layer 41":{"greengirl/Layer 41":[{"time":0,"vertices":[-7.97162,4.89648,-7.97162,4.89648,-9.31111,-0.90131,-7.97162,4.89648,-9.31111,-0.90131,-7.97162,4.89648,-9.31111,-0.90131,-5.13666,-3.04352,-5.13666,-3.04352,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-5.96558,-0.2345,-5.96558,-0.2345,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.93359,0.66949,-5.13666,-3.04352,-4.52606,-3.89575,-3.34827,10.63789,-3.12939,13.27743,-2.56073,10.59045,-2.56073,10.59045,-2.56073,10.59045,-7.97162,4.89648,-7.97162,4.89648,-9.31111,-0.90131,-9.31111,-0.90131,-11.95984,-1.62823,-5.13666,-3.04352,-4.52606,-3.89575,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.13666,-3.04352,-9.31111,-0.90131,-10.52243,5.9162],"curve":[0.25,0,0.75,1]},{"time":0.8,"offset":56,"vertices":[-1.7392,-3.29664,-1.5213,-0.65792,-1.5213,-0.65792,-1.5213,-0.65792,-1.5213,-0.65792],"curve":[0.25,0,0.75,1]},{"time":1.6,"vertices":[-7.97162,4.89648,-7.97162,4.89648,-9.31111,-0.90131,-7.97162,4.89648,-9.31111,-0.90131,-7.97162,4.89648,-9.31111,-0.90131,-5.13666,-3.04352,-5.13666,-3.04352,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-5.96558,-0.2345,-5.96558,-0.2345,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.93359,0.66949,-5.13666,-3.04352,-4.52606,-3.89575,-3.34827,10.63789,-3.12939,13.27743,-2.56073,10.59045,-2.56073,10.59045,-2.56073,10.59045,-7.97162,4.89648,-7.97162,4.89648,-9.31111,-0.90131,-9.31111,-0.90131,-11.95984,-1.62823,-5.13666,-3.04352,-4.52606,-3.89575,-4.52606,-3.89575,-5.13666,-3.04352,-4.52606,-3.89575,-5.96558,-0.2345,-4.52606,-3.89575,-5.13666,-3.04352,-9.31111,-0.90131,-10.52243,5.9162]}]},"Layer 42":{"greengirl/Layer 42":[{"time":0,"vertices":[-2.10126,-0.2651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.88245,2.37375,-1.88245,2.37375,-1.88245,2.37375,-1.88245,2.37375],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[-2.24445,-1.06823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.02411,1.57059,-2.02411,1.57059,-2.02411,1.57059,-2.02411,1.57059],"curve":[0.255,0,0.62,0.47]},{"time":1.6,"vertices":[-2.10126,-0.2651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.88245,2.37375,-1.88245,2.37375,-1.88245,2.37375,-1.88245,2.37375]}]},"Layer 45":{"greengirl/Layer 45":[{"time":0,"offset":4,"vertices":[0.1322,1.57861,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.1322,1.57861,0,0,0,0,0,0,0,0,0.1322,1.57861,0.1322,1.57861,0.20587,2.45562]},{"time":0.8,"curve":[0.25,0,0.75,1]},{"time":1.6,"offset":4,"vertices":[0.1322,1.57861,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.20587,2.45562,0.1322,1.57861,0,0,0,0,0,0,0,0,0.1322,1.57861,0.1322,1.57861,0.20587,2.45562]}]},"Layer 46":{"greengirl/Layer 46":[{"time":0,"vertices":[-0.3369,-1.63622,-0.24736,-0.48986,-0.20034,-2.40277,-0.20417,-2.4941,-0.13167,-1.57657,0.0794,1.01726,-0.25021,4.72,-0.25047,4.75421,-0.45426,2.21778,-0.02018,-0.19595,-1.36931,-1.21614,-1.40717,-1.7187,-0.33699,-1.61486,-0.09152,-1.10058,-0.00422,-3.0E-5,-0.43478,2.48745],"curve":[0.352,0.65,0.687,1]},{"time":0.8,"vertices":[0.68628,5.07064,0.43518,4.27619,0.42285,5.17619,0.49054,5.82053,0.15375,3.60045,-0.03088,2.30706,-0.21252,1.57994,-0.23944,1.29403,-0.03943,1.812,0.19836,2.7922,0.5423,4.35765,0.65527,4.74159,0.66943,4.89261,0.21692,2.67039,0.02179,1.11128,-0.07715,1.89711],"curve":[0.246,0,0.723,0.88]},{"time":1.6,"vertices":[-0.3369,-1.63622,-0.24736,-0.48986,-0.20034,-2.40277,-0.20417,-2.4941,-0.13167,-1.57657,0.0794,1.01726,-0.25021,4.72,-0.25047,4.75421,-0.45426,2.21778,-0.02018,-0.19595,-1.36931,-1.21614,-1.40717,-1.7187,-0.33699,-1.61486,-0.09152,-1.10058,-0.00422,-3.0E-5,-0.43478,2.48745]}]},"Layer 47":{"greengirl/Layer 47":[{"time":0,"offset":12,"vertices":[-0.31281,0.02595,-0.59839,0.04966,-1.08044,0.08974,-0.23712,0.01976,0.85785,-0.07086,0.6756,-0.05591,0.35321,-0.02921,0.15704,-0.01289,-0.02344],"curve":[0.25,0,0.75,1]},{"time":0.8,"offset":12,"vertices":[0.052,0.6189,0.15576,1.85666,0.15576,1.85666,0.15576,1.85666,0.15576,1.85666,0.15576,1.85666,0.052,0.6189,0.15576,1.85666,0.052,0.6189],"curve":[0.25,0,0.75,1]},{"time":1.6,"offset":12,"vertices":[-0.31281,0.02595,-0.59839,0.04966,-1.08044,0.08974,-0.23712,0.01976,0.85785,-0.07086,0.6756,-0.05591,0.35321,-0.02921,0.15704,-0.01289,-0.02344]}]},"Layer 48":{"greengirl/Layer 48":[{"time":0,"vertices":[-0.9449,-1.62677,-1.27808,0.57501,1.2738,0.258,1.51933,-1.94434]},{"time":0.8,"vertices":[-6.11227,14.69135,0.38147,2.83807,0.38147,2.83807,-5.78326,4.24731],"curve":[0.25,0,0.75,1]},{"time":1.6,"vertices":[-0.9449,-1.62677,-1.27808,0.57501,1.2738,0.258,1.51933,-1.94434]}]},"Layer 49":{"greengirl/Layer 49":[{"time":0,"offset":16,"vertices":[10.28113,5.83183,10.28113,5.83183,12.60492,-2.82726,2.32379,-8.65909,2.32379,-8.65909,2.32379,-8.65909]}]},"Layer 50":{"greengirl/Layer 50":[{"time":0,"offset":2,"vertices":[0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.19756,-0.23147,0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,-5.42263,2.05818,-4.98821,1.23807,-4.98821,1.23807,-5.42263,2.05818,-4.98821,1.23807,-2.99321,1.18591],"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"offset":38,"vertices":[-5.83917,2.28677,-5.2981,1.43234,-5.2981,1.43234,-5.83917,2.28677,-5.2981,1.43234,-3.33258,1.48038],"curve":[0.25,0,0.75,1]},{"time":0.8667,"offset":2,"vertices":[3.94965,-3.08508,3.94965,-3.08508,3.94965,-3.08508,0.69312,-2.35449,0.69312,-2.35449,0.69312,-2.35449,0.69312,-2.35449,0.69312,-2.35449,4.64276,-5.43958,3.94965,-3.08508,3.94965,-3.08508,3.94965,-3.08508,3.94965,-3.08508,3.25635,-0.73059,3.25635,-0.73059,3.25635,-0.73059,3.25635,-0.73059,3.25635,-0.73059,6.09442,-4.11694,12.50708,-11.10739,5.44293,-6.25278,6.09442,-4.11694,12.50708,-11.10739,5.86444,-6.11832],"curve":[0.245,0,0.711,0.83]},{"time":1.6,"offset":2,"vertices":[0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.02949,-0.10019,0.19756,-0.23147,0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.16807,-0.13128,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,0.13857,-0.03109,-5.42263,2.05818,-4.98821,1.23807,-4.98821,1.23807,-5.42263,2.05818,-4.98821,1.23807,-2.99321,1.18591]}]},"Layer 51":{"greengirl/Layer 51":[{"time":0,"vertices":[-0.51488,-0.23601,-1.23164,1.07383,-0.31297,0.72771,2.72072,-2.17118,1.60157,-1.57562,3.52094,-3.92502,2.72919,-1.29114,2.91535,-1.34918,2.49043,0.06019,4.11196,-2.73163,0.68496,-0.21385,-0.39851,-8.8E-4,-0.39851,-8.8E-4,-1.31718,0.34525,-3.45443,0.25786,-3.45443,0.25786,-1.01682,0.25831,-0.31859,1.13492,-0.51488,-0.23601,-3.24224,1.46703,-2.51341,-0.6465,-2.23464,-0.48257,-1.95353,-0.79605,-1.01744,-0.62547,0.29669,-0.23686,1.39705,-0.43583],"curve":[0.382,0.58,0.732,1]},{"time":0.2667,"vertices":[-0.26089,-1.82214,0,0,0,0,2.21613,-1.93939,0.62793,-1.07117,1.88373,-3.21362,1.12418,-0.54944,1.12418,-0.54944,-0.13162,1.59302,2.21613,-1.93939,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.26089,-1.82214,0,0,1.02994,-3.38629,1.02994,-3.38629,1.02994,-3.38629,1.02994,-3.38629,0.35522,-1.54245],"curve":[0.25,0,0.75,1]},{"time":0.9667,"vertices":[-1.28659,4.58319,-4.97379,4.33649,-1.26387,2.93872,4.25385,-2.87543,-0.48886,-2.03131,8.49533,-6.08649,7.60577,-3.54468,8.35754,-3.77905,10.45711,-4.59705,9.87213,-5.13873,2.7661,-0.86359,-1.60931,-0.00354,-1.60931,-0.00354,-5.31923,1.39423,-13.95016,1.04132,-13.95016,1.04132,-4.10625,1.04315,-1.28659,4.58319,-1.28659,4.58319,-13.09325,5.92438,-13.27928,7.67792,-12.15353,8.3399,-11.01831,7.07397,-7.23807,7.76282,0.11884,3.72998,5.64174,-1.76001],"curve":[0.243,0,0.654,0.62]},{"time":1.6,"vertices":[-0.51488,-0.23601,-1.23164,1.07383,-0.31297,0.72771,2.72072,-2.17118,1.60157,-1.57562,3.52094,-3.92502,2.72919,-1.29114,2.91535,-1.34918,2.49043,0.06019,4.11196,-2.73163,0.68496,-0.21385,-0.39851,-8.8E-4,-0.39851,-8.8E-4,-1.31718,0.34525,-3.45443,0.25786,-3.45443,0.25786,-1.01682,0.25831,-0.31859,1.13492,-0.51488,-0.23601,-3.24224,1.46703,-2.51341,-0.6465,-2.23464,-0.48257,-1.95353,-0.79605,-1.01744,-0.62547,0.29669,-0.23686,1.39705,-0.43583]}]},"Layer 52":{"greengirl/Layer 52":[{"time":0,"offset":16,"vertices":[0.1225,-2.55952,0.1225,-2.55952,2.55212,5.39114,-0.46268,-9.92282,-0.46268,-9.92282,-1.22549,-5.67657,0,0,0,0,0,0,0,0,0,0,-5.68823,-14.38522,-5.68823,-14.38522,-4.64856,-9.32791,0,0,-0.38708,-0.55658,0,0,0.43616,-7.6861,0.43616,-7.6861,-0.84668,-5.96844,-0.84668,-5.96844,-0.54376,-3.7507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.07758,4.47232,-1.07758,4.47232,-1.07758,4.47232,-0.03973,0.37579,2.49942,5.09767,2.34106,1.07666,0,0,2.55212,5.39114,0.84109,1.64323,0.1225,-2.55952,0,0,0,0,0,0,-0.03668,2.91638,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296],"curve":[0.25,0,0.75,1]},{"time":0.8,"offset":6,"vertices":[7.3446,-2.89148,1.98572,-2.96608,-6.94446,-0.74165,-3.84991,-1.16534,-3.84991,-1.16534,-3.05865,-3.89336,-2.8421,-8.43613,-2.9646,-5.87661,-5.16107,0.46578,-5.16107,0.46578,-3.18115,-1.33384,-3.18115,-1.33384,-3.18115,-1.33384,-3.18115,-1.33384,-3.32623,1.69517,-3.32623,1.69517,-3.9101,1.21177,-3.33392,5.03405,-3.18115,-1.33384,-2.38806,-2.05474,-3.34674,-4.2254,-3.18115,-1.33384,-0.91754,2.11369,-0.91754,2.11369,-0.91754,2.11369,-0.91754,2.11369,-3.18115,-1.33384,-3.18115,-1.33384,-1.21259,-4.42686,-1.21259,-4.42686,-3.7215,-5.9128,-3.35455,-1.93339,-3.18115,-1.33384,-4.27136,-2.83868,5.86487,0.65975,3.09967,-0.42374,0,0,0,0,0,0,-3.75775,-3.58404,-11.26099,-6.00418,-5.23694,-6.09805,-2.15729,-11.75596,-1.30444,-11.71531,-3.8949,-6.51235,-3.8949,-6.51235,-2.9646,-5.87661,-2.8421,-8.43613,-2.8421,-8.43613,-3.8949,-6.51235,-3.8949,-6.51235,-3.8949,-6.51235,-3.78052,-5.72421,-4.15527,-7.41161,-4.15527,-7.41161,-3.8949,-6.51235,-4.15527,-7.41161,-4.15527,-7.41161],"curve":[0.25,0,0.75,1]},{"time":1.6,"offset":16,"vertices":[0.1225,-2.55952,0.1225,-2.55952,2.55212,5.39114,-0.46268,-9.92282,-0.46268,-9.92282,-1.22549,-5.67657,0,0,0,0,0,0,0,0,0,0,-5.68823,-14.38522,-5.68823,-14.38522,-4.64856,-9.32791,0,0,-0.38708,-0.55658,0,0,0.43616,-7.6861,0.43616,-7.6861,-0.84668,-5.96844,-0.84668,-5.96844,-0.54376,-3.7507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.07758,4.47232,-1.07758,4.47232,-1.07758,4.47232,-0.03973,0.37579,2.49942,5.09767,2.34106,1.07666,0,0,2.55212,5.39114,0.84109,1.64323,0.1225,-2.55952,0,0,0,0,0,0,-0.03668,2.91638,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296,0.3504,3.47296]}]},"Layer 53":{"greengirl/Layer 53":[{"time":0,"vertices":[1.2247,2.53559,1.44385,0.42563,1.44385,0.42563,0.96747,1.15342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.26417,-0.0407,0,0,0,0,0,0,0,0,0,0,-2.47023,0.4607,0.33967,0.62321,-0.2026,0.03193,-0.58826,-0.07553,4.09072,8.14273,4.37176,8.09508,-1.00869,9.41678,-0.13692,-0.09959,0,0,0,0,1.09162,2.57851,-0.11564,0.07053],"curve":[0.36,0.64,0.695,1]},{"time":0.0667,"vertices":[1.41812,2.60342,1.50803,0.44455,1.50803,0.44455,1.01047,1.20468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.58002,0.48117,0.35477,0.65091,0,0,0,0,4.70505,8.41,4.70505,8.41,-0.87811,9.81308,0,0,0,0,0,0,1.41812,2.60342],"curve":[0.25,0,0.75,1]},{"time":0.8667,"vertices":[-3.12724,1.00934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.20795,-0.95636,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4.76108,0.75031,-13.82423,-1.77499,-9.73166,2.12897,-3.12724,1.00934,-3.94669,0.50003,-3.21764,-2.34032,0,0,0,0,-6.25465,2.01804,-2.71761,1.65744],"curve":[0.245,0,0.711,0.83]},{"time":1.6,"vertices":[1.2247,2.53559,1.44385,0.42563,1.44385,0.42563,0.96747,1.15342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.26417,-0.0407,0,0,0,0,0,0,0,0,0,0,-2.47023,0.4607,0.33967,0.62321,-0.2026,0.03193,-0.58826,-0.07553,4.09072,8.14273,4.37176,8.09508,-1.00869,9.41678,-0.13692,-0.09959,0,0,0,0,1.09162,2.57851,-0.11564,0.07053]}]},"Layer 54":{"greengirl/Layer 54":[{"time":0,"vertices":[-0.71964,0.16477,2.48627,-1.60727,2.48627,-1.60727,2.48627,-1.60727,2.48627,-1.60727,-3.75833,-5.25945,-6.31787,-4.90208,7.0686,-6.67669,12.46783,-4.01827,-0.85507,0.92776,-1.38657,-0.4357,-5.67691,0.0283,0.40845,-1.82424,0.40845,-1.82424,0.40845,-1.82424,-0.30038,-5.25087,0.49585,-6.18515,2.48627,-1.60727,-1.38684,-2.09097,-1.18771,0.69502,2.68539,1.17872,2.68539,1.17872,4.6543,4.17254,10.95822,-1.39524,12.98746,-3.7253,14.42389,-4.97225,14.3912,-5.38597,14.62109,-2.49011,11.46133,-2.22506,-0.5419,-5.80268,-1.58569,-3.22168,-0.43204,-10.60082,-1.81558,-6.11754,-1.58569,-3.22168,-1.58569,-3.22168],"curve":[0.25,0,0.75,1]},{"time":0.8333,"vertices":[-0.01551,0.00355,0.35292,1.99855,0.35292,1.99855,0.35292,1.99855,0.35292,1.99855,-1.14299,0.91325,-6.588,-2.77099,2.69198,-2.54149,3.95326,-2.91948,-0.35308,-2.21115,-3.67862,-1.98657,3.17258,-0.43795,7.12061,6.34956,8.17908,13.7555,6.99774,17.2795,2.39069,14.22489,-0.78598,16.80013,0.33689,10.66977,-2.09121,6.54608,-3.56203,3.45474,-2.43566,2.39721,-0.65099,0.98929,0.1003,0.08992,4.70099,4.23183,7.06601,7.61018,6.90618,9.89655,9.06039,12.86893,13.40121,10.3847,11.29832,5.29549,-1.59147,7.53277,-1.82746,13.11452,-0.83112,11.84294,-2.1583,17.00901,0.42849,14.93596,-0.34134,6.35055],"curve":[0.246,0,0.723,0.88]},{"time":1.6,"vertices":[-0.71964,0.16477,2.48627,-1.60727,2.48627,-1.60727,2.48627,-1.60727,2.48627,-1.60727,-3.75833,-5.25945,-6.31787,-4.90208,7.0686,-6.67669,12.46783,-4.01827,-0.85507,0.92776,-1.38657,-0.4357,-5.67691,0.0283,0.40845,-1.82424,0.40845,-1.82424,0.40845,-1.82424,-0.30038,-5.25087,0.49585,-6.18515,2.48627,-1.60727,-1.38684,-2.09097,-1.18771,0.69502,2.68539,1.17872,2.68539,1.17872,4.6543,4.17254,10.95822,-1.39524,12.98746,-3.7253,14.42389,-4.97225,14.3912,-5.38597,14.62109,-2.49011,11.46133,-2.22506,-0.5419,-5.80268,-1.58569,-3.22168,-0.43204,-10.60082,-1.81558,-6.11754,-1.58569,-3.22168,-1.58569,-3.22168]}]}}}}}},"heroes":{"skeleton":{"hash":"t6QLpQJzj/YHuzgCpy5XvU/Tvss","spine":"3.6.39","width":620.96,"height":1043.9},"bones":[{"name":"root","x":-1.92},{"name":"Character_midpoint","parent":"root","x":7.67,"y":372.56},{"name":"torso","parent":"Character_midpoint","length":145.87,"rotation":90,"x":-3.03,"y":-71.92},{"name":"arm_upper_far","parent":"torso","length":103.24,"rotation":-164.17,"x":117.5,"y":-43.55,"transform":"noScale"},{"name":"arm_lower_far","parent":"arm_upper_far","length":70.41,"rotation":97.62,"x":101.98,"y":4.4,"transform":"noScale"},{"name":"arm_upper_near","parent":"torso","length":110.71,"rotation":121.63,"x":135.07,"y":67.14,"transform":"noScale"},{"name":"arm_lower_near","parent":"arm_upper_near","length":69.69,"rotation":90.73,"x":108.7,"y":1.26,"transform":"noScale"},{"name":"waist","parent":"torso","length":47.7,"rotation":176.39,"x":-7.09,"y":4.05,"transform":"noScale"},{"name":"leg_upper_far","parent":"waist","length":110.01,"rotation":40.6,"x":18.62,"y":26.55,"transform":"noScale"},{"name":"leg_lower_far","parent":"leg_upper_far","length":129.69,"rotation":-38.21,"x":110.01,"y":-0.43,"transform":"noScale"},{"name":"foot_far","parent":"leg_lower_far","length":105.57,"rotation":65.82,"x":131.07,"y":-17.47,"transform":"noScale"},{"name":"leg_upper_near","parent":"waist","length":88.41,"rotation":-14.25,"x":24.34,"y":-31.95,"transform":"noScale"},{"name":"leg_lower_near","parent":"leg_upper_near","length":133.18,"rotation":-3.6,"x":90.34,"y":0.36,"transform":"noScale"},{"name":"foot_near","parent":"leg_lower_near","length":89.12,"rotation":90.88,"x":155.82,"y":-15.78,"transform":"noScale"},{"name":"hand_far","parent":"arm_lower_far","length":58.13,"rotation":-0.9,"x":52.77,"y":1.03,"transform":"noScale"},{"name":"hand_near","parent":"arm_lower_near","length":52.53,"rotation":1.35,"x":59.59,"y":-0.57,"transform":"noScale"},{"name":"neck","parent":"torso","length":40.51,"x":163.09,"y":2.02,"transform":"noScale"},{"name":"head","parent":"neck","length":157.09,"rotation":-1.8,"x":52.67,"y":1.01,"transform":"noScale"}],"slots":[{"name":"arm_upper_far","bone":"arm_upper_far","attachment":"upper_far"},{"name":"arm_lower_far","bone":"arm_lower_far","attachment":"arm_lower_far"},{"name":"hand_far","bone":"hand_far","attachment":"hand_2_fistPalm"},{"name":"leg_upper_far","bone":"leg_upper_far","attachment":"leg_upper_far"},{"name":"leg_lower_far","bone":"leg_lower_far","attachment":"leg_lower_far"},{"name":"foot_far","bone":"foot_far","attachment":"foot_far_1"},{"name":"waist","bone":"waist","attachment":"head_2_injured"},{"name":"torso","bone":"torso","attachment":"torso"},{"name":"neck","bone":"neck","attachment":"neck"},{"name":"head","bone":"head","attachment":"head_1"},{"name":"leg_upper_near","bone":"leg_upper_near","attachment":"leg_upper_near"},{"name":"leg_lower_near","bone":"leg_lower_near","attachment":"leg_lower_near_1"},{"name":"foot_near","bone":"foot_near","attachment":"foot_near_1"},{"name":"arm_upper_near","bone":"arm_upper_near","attachment":"arm_upper_near"},{"name":"item_near","bone":"hand_near"},{"name":"arm_lower_near","bone":"arm_lower_near","attachment":"arm_lower_near"},{"name":"hand_near","bone":"hand_near","attachment":"hand_1_fistBack"}],"skins":{"default":{"item_near":{"sword_1":{"x":48.84,"y":273.52,"width":508,"height":875},"sword_2_swing":{"x":-80.42,"y":274.11,"width":767,"height":873},"sword_3_bigSwing":{"x":-202.54,"y":284.84,"width":1010,"height":875}}},"Assassin":{"arm_lower_far":{"arm_lower_far":{"name":"Assassin/Assassin_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"Assassin/Assassin_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"Assassin/Assassin_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"Assassin/Assassin_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"Assassin/Assassin_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"Assassin/Assassin_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"Assassin/Assassin_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"Assassin/Assassin_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"Assassin/Assassin_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"Assassin/Assassin_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"Assassin/Assassin_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"Assassin/Assassin_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"Assassin/Assassin_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"Assassin/Assassin_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"Assassin/Assassin_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"Assassin/Assassin_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"Assassin/Assassin_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"Assassin/Assassin_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"Assassin/Assassin_leg_upper_near","x":51.78,"y":-3.62,"rotation":87.64,"width":177,"height":271}},"neck":{"neck":{"name":"Assassin/Assassin_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"Assassin/Assassin_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"Assassin/Assassin_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Beardy":{"arm_lower_far":{"arm_lower_far":{"name":"BeardyBuck/BeardyBuck_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"BeardyBuck/BeardyBuck_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"BeardyBuck/BeardyBuck_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"BeardyBuck/BeardyBuck_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"BeardyBuck/BeardyBuck_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"BeardyBuck/BeardyBuck_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"BeardyBuck/BeardyBuck_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"BeardyBuck/BeardyBuck_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"BeardyBuck/BeardyBuck_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"BeardyBuck/BeardyBuck_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"BeardyBuck/BeardyBuck_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"BeardyBuck/BeardyBuck_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"BeardyBuck/BeardyBuck_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"BeardyBuck/BeardyBuck_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"BeardyBuck/BeardyBuck_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"BeardyBuck/BeardyBuck_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"BeardyBuck/BeardyBuck_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":104,"height":188}},"leg_upper_far":{"leg_upper_far":{"name":"BeardyBuck/BeardyBuck_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"BeardyBuck/BeardyBuck_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"BeardyBuck/BeardyBuck_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"BeardyBuck/BeardyBuck_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"BeardyBuck/BeardyBuck_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Buck":{"arm_lower_far":{"arm_lower_far":{"name":"Buck/BuckMatthews_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"Buck/BuckMatthews_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"Buck/BuckMatthews_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"Buck/BuckMatthews_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"Buck/BuckMatthews_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"Buck/BuckMatthews_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"Buck/BuckMatthews_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"Buck/BuckMatthews_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"Buck/BuckMatthews_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"Buck/BuckMatthews_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"Buck/BuckMatthews_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"Buck/BuckMatthews_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"Buck/BuckMatthews_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"Buck/BuckMatthews_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"Buck/BuckMatthews_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"Buck/BuckMatthews_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"Buck/BuckMatthews_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"Buck/BuckMatthews_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"Buck/BuckMatthews_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"Buck/BuckMatthews_neck","x":18.74,"y":1.98,"rotation":-90,"width":68,"height":59}},"torso":{"torso":{"name":"Buck/BuckMatthews_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"Buck/BuckMatthews_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Chuck":{"arm_lower_far":{"arm_lower_far":{"name":"Chuck/ChuckMatthews_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"Chuck/ChuckMatthews_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"Chuck/ChuckMatthews_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"Chuck/ChuckMatthews_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"Chuck/ChuckMatthews_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"Chuck/ChuckMatthews_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"Chuck/ChuckMatthews_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"Chuck/ChuckMatthews_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"Chuck/ChuckMatthews_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"Chuck/ChuckMatthews_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"Chuck/ChuckMatthews_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"Chuck/ChuckMatthews_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"Chuck/ChuckMatthews_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"Chuck/ChuckMatthews_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"Chuck/ChuckMatthews_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"Chuck/ChuckMatthews_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"Chuck/ChuckMatthews_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"Chuck/ChuckMatthews_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"Chuck/ChuckMatthews_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"Chuck/ChuckMatthews_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"Chuck/ChuckMatthews_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"Chuck/ChuckMatthews_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Commander":{"arm_lower_far":{"arm_lower_far":{"name":"Commander/Commander-Firestrike_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":255,"height":205}},"arm_lower_near":{"arm_lower_near":{"name":"Commander/Commander-Firestrike_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":56,"height":121}},"arm_upper_far":{"upper_far":{"name":"Commander/Commander-Firestrike_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":295,"height":278}},"arm_upper_near":{"arm_upper_near":{"name":"Commander/Commander-Firestrike_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":295,"height":278}},"foot_far":{"foot_far_1":{"name":"Commander/Commander-Firestrike_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":320,"height":172},"foot_far_2_bent":{"name":"Commander/Commander-Firestrike_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":301,"height":191}},"foot_near":{"foot_near_1":{"name":"Commander/Commander-Firestrike_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":320,"height":172},"foot_near_2_bent":{"name":"Commander/Commander-Firestrike_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":301,"height":191}},"hand_far":{"hand_1_fistBack":{"name":"Commander/Commander-Firestrike_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":199,"height":156},"hand_2_fistPalm":{"name":"Commander/Commander-Firestrike_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":199,"height":156}},"hand_near":{"hand_1_fistBack":{"name":"Commander/Commander-Firestrike_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":199,"height":156},"hand_2_fistPalm":{"name":"Commander/Commander-Firestrike_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":199,"height":156}},"head":{"head_1":{"name":"Commander/Commander-Firestrike_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":539,"height":539},"head_2_injured":{"name":"Commander/Commander-Firestrike_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":539,"height":539}},"leg_lower_far":{"leg_lower_far":{"name":"Commander/Commander-Firestrike_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":190,"height":321}},"leg_lower_near":{"leg_lower_near_1":{"name":"Commander/Commander-Firestrike_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":190,"height":321},"leg_lower_near_2":{"name":"Commander/Commander-Firestrike_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":190,"height":321}},"leg_upper_far":{"leg_upper_far":{"name":"Commander/Commander-Firestrike_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":173,"height":267}},"leg_upper_near":{"leg_upper_near":{"name":"Commander/Commander-Firestrike_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":172,"height":267}},"neck":{"neck":{"name":"Commander/Commander-Firestrike_neck","x":18.74,"y":1.98,"rotation":-90,"width":170,"height":227}},"torso":{"torso":{"name":"Commander/Commander-Firestrike_torso","x":99.38,"y":4.97,"rotation":-90,"width":149,"height":200}},"waist":{"head_2_injured":{"name":"Commander/Commander-Firestrike_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":279,"height":212}}},"Ducky":{"arm_lower_far":{"arm_lower_far":{"name":"Duck/DuckMatthews_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"Duck/DuckMatthews_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"Duck/DuckMatthews_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"Duck/DuckMatthews_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"Duck/DuckMatthews_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"Duck/DuckMatthews_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"Duck/DuckMatthews_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"Duck/DuckMatthews_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"Duck/DuckMatthews_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"Duck/DuckMatthews_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"Duck/DuckMatthews_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"Duck/DuckMatthews_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"Duck/DuckMatthews_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"Duck/DuckMatthews_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"Duck/DuckMatthews_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"Duck/DuckMatthews_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"Duck/DuckMatthews_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"Duck/DuckMatthews_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"Duck/DuckMatthews_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"Duck/DuckMatthews_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"Duck/DuckMatthews_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"Duck/DuckMatthews_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Dummy":{"arm_lower_far":{"arm_lower_far":{"name":"Dummy/Dummy_arm_lower_far","x":29.65,"y":1.56,"rotation":92.05,"width":72,"height":114}},"arm_lower_near":{"arm_lower_near":{"name":"Dummy/Dummy_arm_lower_near","x":34.59,"y":1.25,"rotation":94.11,"width":79,"height":126}},"arm_upper_far":{"upper_far":{"name":"Dummy/Dummy_arm_upper_far","x":38.3,"y":1.81,"rotation":89.14,"width":99,"height":180}},"arm_upper_near":{"arm_upper_near":{"name":"Dummy/Dummy_arm_upper_near","x":48.21,"y":1.27,"rotation":89.81,"width":99,"height":180}},"foot_far":{"foot_far_1":{"name":"Dummy/Dummy_foot_far_1","x":38.73,"y":-2.95,"rotation":25.39,"width":167,"height":81},"foot_far_2_bent":{"name":"Dummy/Dummy_foot_far_2_bent","x":35.11,"y":11.06,"rotation":25.39,"width":157,"height":109}},"foot_near":{"foot_near_1":{"name":"Dummy/Dummy_foot_near_1","x":32,"y":-1.69,"rotation":20.57,"width":168,"height":80},"foot_near_2_bent":{"name":"Dummy/Dummy_foot_near_2_bent","x":31.15,"y":14.35,"rotation":20.57,"width":157,"height":109}},"hand_far":{"hand_1_fistBack":{"name":"Dummy/Dummy_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":83,"height":77},"hand_2_fistPalm":{"name":"Dummy/Dummy_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":83,"height":77}},"hand_near":{"hand_1_fistBack":{"name":"Dummy/Dummy_hand_1_fistBack","x":28.67,"y":8.17,"rotation":91.61,"width":94,"height":73},"hand_2_fistPalm":{"name":"Dummy/Dummy_hand_2_fistPalm","x":28.67,"y":8.17,"rotation":91.61,"width":83,"height":77}},"head":{"head_1":{"name":"Dummy/Dummy_head_1","x":66.47,"y":-41.68,"rotation":276.72,"width":265,"height":265},"head_2_injured":{"name":"Dummy/Dummy_head_2_injured","x":66.47,"y":-41.69,"rotation":276.72,"width":265,"height":265}},"leg_lower_far":{"leg_lower_far":{"name":"Dummy/Dummy_leg_lower_far","x":48.1,"y":-11.03,"rotation":95.15,"width":131,"height":178}},"leg_lower_near":{"leg_lower_near_1":{"name":"Dummy/Dummy_leg_lower_near_1","x":82.08,"y":-10.15,"rotation":96.62,"width":131,"height":204},"leg_lower_near_2":{"name":"Dummy/Dummy_leg_lower_near_2","x":67.18,"y":-11.93,"rotation":97.38,"width":131,"height":178}},"leg_upper_far":{"leg_upper_far":{"name":"Dummy/Dummy_leg_upper_far","x":53.86,"y":1.02,"rotation":88.54,"width":76,"height":163}},"leg_upper_near":{"leg_upper_near":{"name":"Dummy/Dummy_leg_upper_near","x":51.78,"y":-3.62,"rotation":87.64,"width":76,"height":163}},"neck":{"neck":{"name":"Dummy/Dummy_neck","x":21.06,"y":0.81,"rotation":-90,"width":70,"height":62}},"torso":{"torso":{"name":"Dummy/Dummy_torso","x":82.91,"y":6.8,"rotation":-90,"width":169,"height":181}},"waist":{"head_2_injured":{"name":"Dummy/Dummy_waist","x":-11.15,"y":-7.3,"rotation":93.6,"width":135,"height":136}}},"Fletch":{"arm_lower_far":{"arm_lower_far":{"name":"Fletch/Fletch_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":254,"height":204}},"arm_lower_near":{"arm_lower_near":{"name":"Fletch/Fletch_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":254,"height":203}},"arm_upper_far":{"upper_far":{"name":"Fletch/Fletch_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":295,"height":278}},"arm_upper_near":{"arm_upper_near":{"name":"Fletch/Fletch_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":295,"height":278}},"foot_far":{"foot_far_1":{"name":"Fletch/Fletch_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":320,"height":172},"foot_far_2_bent":{"name":"Fletch/Fletch_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":301,"height":191}},"foot_near":{"foot_near_1":{"name":"Fletch/Fletch_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":320,"height":172},"foot_near_2_bent":{"name":"Fletch/Fletch_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":301,"height":191}},"hand_far":{"hand_1_fistBack":{"name":"Fletch/Fletch_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":199,"height":156},"hand_2_fistPalm":{"name":"Fletch/Fletch_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":199,"height":156}},"hand_near":{"hand_1_fistBack":{"name":"Fletch/Fletch_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":199,"height":156},"hand_2_fistPalm":{"name":"Fletch/Fletch_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":199,"height":156}},"head":{"head_1":{"name":"Fletch/Fletch_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":539,"height":539},"head_2_injured":{"name":"Fletch/Fletch_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":541,"height":541}},"leg_lower_far":{"leg_lower_far":{"name":"Fletch/Fletch_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":190,"height":321}},"leg_lower_near":{"leg_lower_near_1":{"name":"Fletch/Fletch_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":190,"height":321},"leg_lower_near_2":{"name":"Fletch/Fletch_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":190,"height":321}},"leg_upper_far":{"leg_upper_far":{"name":"Fletch/Fletch_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":173,"height":267}},"leg_upper_near":{"leg_upper_near":{"name":"Fletch/Fletch_leg_upper_near","x":51.78,"y":-3.62,"rotation":87.64,"width":172,"height":267}},"neck":{"neck":{"name":"Fletch/Fletch_neck","x":18.74,"y":1.98,"rotation":-90,"width":126,"height":106}},"torso":{"torso":{"name":"Fletch/Fletch_torso","x":99.38,"y":4.97,"rotation":-90,"width":508,"height":448}},"waist":{"head_2_injured":{"name":"Fletch/Fletch_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":582,"height":442}}},"Gabriel":{"arm_lower_far":{"arm_lower_far":{"name":"GabrielCaine/GabrielCaine_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"GabrielCaine/GabrielCaine_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"GabrielCaine/GabrielCaine_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"GabrielCaine/GabrielCaine_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"GabrielCaine/GabrielCaine_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"GabrielCaine/GabrielCaine_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"GabrielCaine/GabrielCaine_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"GabrielCaine/GabrielCaine_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"GabrielCaine/GabrielCaine_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"GabrielCaine/GabrielCaine_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"GabrielCaine/GabrielCaine_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"GabrielCaine/GabrielCaine_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"GabrielCaine/GabrielCaine_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"GabrielCaine/GabrielCaine_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"GabrielCaine/GabrielCaine_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"GabrielCaine/GabrielCaine_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"GabrielCaine/GabrielCaine_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"GabrielCaine/GabrielCaine_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"GabrielCaine/GabrielCaine_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"GabrielCaine/GabrielCaine_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"GabrielCaine/GabrielCaine_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"GabrielCaine/GabrielCaine_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"MetalMan":{"arm_lower_far":{"arm_lower_far":{"name":"MetalMan-Blue/MetalMan-Blue_arm_lower_far","x":29.65,"y":1.56,"rotation":92.05,"width":72,"height":114}},"arm_lower_near":{"arm_lower_near":{"name":"MetalMan-Blue/MetalMan-Blue_arm_lower_near","x":34.59,"y":1.25,"rotation":94.11,"width":79,"height":126}},"arm_upper_far":{"upper_far":{"name":"MetalMan-Blue/MetalMan-Blue_arm_upper_far","x":38.3,"y":1.81,"rotation":89.14,"width":99,"height":180}},"arm_upper_near":{"arm_upper_near":{"name":"MetalMan-Blue/MetalMan-Blue_arm_upper_near","x":48.21,"y":1.27,"rotation":89.81,"width":99,"height":180}},"foot_far":{"foot_far_1":{"name":"MetalMan-Blue/MetalMan-Blue_foot_far_1","x":38.73,"y":-2.95,"rotation":25.39,"width":168,"height":80},"foot_far_2_bent":{"name":"MetalMan-Blue/MetalMan-Blue_foot_far_2_bent","x":35.11,"y":11.06,"rotation":25.39,"width":157,"height":109}},"foot_near":{"foot_near_1":{"name":"MetalMan-Blue/MetalMan-Blue_foot_near_1","x":32,"y":-1.69,"rotation":20.57,"width":168,"height":80},"foot_near_2_bent":{"name":"MetalMan-Blue/MetalMan-Blue_foot_near_2_bent","x":31.15,"y":14.35,"rotation":20.57,"width":157,"height":109}},"hand_far":{"hand_1_fistBack":{"name":"MetalMan-Blue/MetalMan-Blue_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":83,"height":77},"hand_2_fistPalm":{"name":"MetalMan-Blue/MetalMan-Blue_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":83,"height":77}},"hand_near":{"hand_1_fistBack":{"name":"MetalMan-Blue/MetalMan-Blue_hand_1_fistBack","x":28.67,"y":8.17,"rotation":91.61,"width":94,"height":73},"hand_2_fistPalm":{"name":"MetalMan-Blue/MetalMan-Blue_hand_2_fistPalm","x":28.67,"y":8.17,"rotation":91.61,"width":83,"height":77}},"head":{"head_1":{"name":"MetalMan-Blue/MetalMan-Blue_head_1","x":66.47,"y":-41.68,"rotation":276.72,"width":265,"height":265},"head_2_injured":{"name":"MetalMan-Blue/MetalMan-Blue_head_2_injured","x":66.47,"y":-41.69,"rotation":276.72,"width":265,"height":265}},"leg_lower_far":{"leg_lower_far":{"name":"MetalMan-Blue/MetalMan-Blue_leg_lower_far","x":48.1,"y":-11.03,"rotation":95.15,"width":131,"height":178}},"leg_lower_near":{"leg_lower_near_1":{"name":"MetalMan-Blue/MetalMan-Blue_leg_lower_near_1","x":82.08,"y":-10.15,"rotation":96.62,"width":131,"height":204},"leg_lower_near_2":{"name":"MetalMan-Blue/MetalMan-Blue_leg_lower_near_2","x":67.18,"y":-11.93,"rotation":97.38,"width":131,"height":178}},"leg_upper_far":{"leg_upper_far":{"name":"MetalMan-Blue/MetalMan-Blue_leg_upper_far","x":53.86,"y":1.02,"rotation":88.54,"width":76,"height":163}},"leg_upper_near":{"leg_upper_near":{"name":"MetalMan-Blue/MetalMan-Blue_leg_upper_near","x":51.78,"y":-3.62,"rotation":87.64,"width":76,"height":163}},"neck":{"neck":{"name":"MetalMan-Blue/MetalMan-Blue_neck","x":21.06,"y":0.81,"rotation":-90,"width":70,"height":62}},"torso":{"torso":{"name":"MetalMan-Blue/MetalMan-Blue_torso","x":82.91,"y":6.8,"rotation":-90,"width":169,"height":182}},"waist":{"head_2_injured":{"name":"MetalMan-Blue/MetalMan-Blue_waist","x":-11.15,"y":-7.3,"rotation":93.6,"width":135,"height":136}}},"Pamela-1":{"arm_lower_far":{"arm_lower_far":{"name":"PamelaFrost/PamelaFrost_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"PamelaFrost/PamelaFrost_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"PamelaFrost/PamelaFrost_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"PamelaFrost/PamelaFrost_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"PamelaFrost/PamelaFrost_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"PamelaFrost/PamelaFrost_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"PamelaFrost/PamelaFrost_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"PamelaFrost/PamelaFrost_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"PamelaFrost/PamelaFrost_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost/PamelaFrost_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"PamelaFrost/PamelaFrost_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost/PamelaFrost_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"PamelaFrost/PamelaFrost_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"PamelaFrost/PamelaFrost_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"PamelaFrost/PamelaFrost_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"PamelaFrost/PamelaFrost_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"PamelaFrost/PamelaFrost_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"PamelaFrost/PamelaFrost_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"PamelaFrost/PamelaFrost_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"PamelaFrost/PamelaFrost_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"PamelaFrost/PamelaFrost_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"PamelaFrost/PamelaFrost_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Pamela-2":{"arm_lower_far":{"arm_lower_far":{"name":"PamelaFrost-02/PamelaFrost-02_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"PamelaFrost-02/PamelaFrost-02_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"PamelaFrost-02/PamelaFrost-02_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"PamelaFrost-02/PamelaFrost-02_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"PamelaFrost-02/PamelaFrost-02_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"PamelaFrost-02/PamelaFrost-02_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"PamelaFrost-02/PamelaFrost-02_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"PamelaFrost-02/PamelaFrost-02_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"PamelaFrost-02/PamelaFrost-02_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-02/PamelaFrost-02_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"PamelaFrost-02/PamelaFrost-02_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-02/PamelaFrost-02_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"PamelaFrost-02/PamelaFrost-02_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"PamelaFrost-02/PamelaFrost-02_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"PamelaFrost-02/PamelaFrost-02_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"PamelaFrost-02/PamelaFrost-02_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"PamelaFrost-02/PamelaFrost-02_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"PamelaFrost-02/PamelaFrost-02_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"PamelaFrost-02/PamelaFrost-02_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"PamelaFrost-02/PamelaFrost-02_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"PamelaFrost-02/PamelaFrost-02_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"PamelaFrost-02/PamelaFrost-02_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Pamela-3":{"arm_lower_far":{"arm_lower_far":{"name":"PamelaFrost-03/PamelaFrost-03_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"PamelaFrost-03/PamelaFrost-03_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"PamelaFrost-03/PamelaFrost-03_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"PamelaFrost-03/PamelaFrost-03_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"PamelaFrost-03/PamelaFrost-03_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"PamelaFrost-03/PamelaFrost-03_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"PamelaFrost-03/PamelaFrost-03_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"PamelaFrost-03/PamelaFrost-03_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"PamelaFrost-03/PamelaFrost-03_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-03/PamelaFrost-03_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"PamelaFrost-03/PamelaFrost-03_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-03/PamelaFrost-03_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"PamelaFrost-03/PamelaFrost-03_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"PamelaFrost-03/PamelaFrost-03_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"PamelaFrost-03/PamelaFrost-03_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"PamelaFrost-03/PamelaFrost-03_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"PamelaFrost-03/PamelaFrost-03_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"PamelaFrost-03/PamelaFrost-03_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"PamelaFrost-03/PamelaFrost-03_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"PamelaFrost-03/PamelaFrost-03_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"PamelaFrost-03/PamelaFrost-03_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"PamelaFrost-03/PamelaFrost-03_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Pamela-4":{"arm_lower_far":{"arm_lower_far":{"name":"PamelaFrost-04/PamelaFrost-04_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"PamelaFrost-04/PamelaFrost-04_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"PamelaFrost-04/PamelaFrost-04_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"PamelaFrost-04/PamelaFrost-04_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"PamelaFrost-04/PamelaFrost-04_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"PamelaFrost-04/PamelaFrost-04_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"PamelaFrost-04/PamelaFrost-04_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"PamelaFrost-04/PamelaFrost-04_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"PamelaFrost-04/PamelaFrost-04_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-04/PamelaFrost-04_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"PamelaFrost-04/PamelaFrost-04_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-04/PamelaFrost-04_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"PamelaFrost-04/PamelaFrost-04_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"PamelaFrost-04/PamelaFrost-04_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"PamelaFrost-04/PamelaFrost-04_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"PamelaFrost-04/PamelaFrost-04_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"PamelaFrost-04/PamelaFrost-04_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"PamelaFrost-04/PamelaFrost-04_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"PamelaFrost-04/PamelaFrost-04_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"PamelaFrost-04/PamelaFrost-04_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"PamelaFrost-04/PamelaFrost-04_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"PamelaFrost-04/PamelaFrost-04_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Pamela-5":{"arm_lower_far":{"arm_lower_far":{"name":"PamelaFrost-05/PamelaFrost-05_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"PamelaFrost-05/PamelaFrost-05_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"PamelaFrost-05/PamelaFrost-05_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"PamelaFrost-05/PamelaFrost-05_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"PamelaFrost-05/PamelaFrost-05_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"PamelaFrost-05/PamelaFrost-05_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"PamelaFrost-05/PamelaFrost-05_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"PamelaFrost-05/PamelaFrost-05_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"PamelaFrost-05/PamelaFrost-05_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-05/PamelaFrost-05_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"PamelaFrost-05/PamelaFrost-05_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"PamelaFrost-05/PamelaFrost-05_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"PamelaFrost-05/PamelaFrost-05_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"PamelaFrost-05/PamelaFrost-05_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"PamelaFrost-05/PamelaFrost-05_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"PamelaFrost-05/PamelaFrost-05_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"PamelaFrost-05/PamelaFrost-05_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"PamelaFrost-05/PamelaFrost-05_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"PamelaFrost-05/PamelaFrost-05_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"PamelaFrost-05/PamelaFrost-05_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"PamelaFrost-05/PamelaFrost-05_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"PamelaFrost-05/PamelaFrost-05_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Stumpy":{"arm_lower_far":{"arm_lower_far":{"name":"StumpyPete/StumpyPete_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"StumpyPete/StumpyPete_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"StumpyPete/StumpyPete_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"StumpyPete/StumpyPete_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"StumpyPete/StumpyPete_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"StumpyPete/StumpyPete_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"StumpyPete/StumpyPete_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":1,"height":1},"foot_near_2_bent":{"name":"StumpyPete/StumpyPete_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":1,"height":1}},"hand_far":{"hand_1_fistBack":{"name":"StumpyPete/StumpyPete_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"StumpyPete/StumpyPete_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"StumpyPete/StumpyPete_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"StumpyPete/StumpyPete_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"StumpyPete/StumpyPete_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"StumpyPete/StumpyPete_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"StumpyPete/StumpyPete_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"StumpyPete/StumpyPete_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"StumpyPete/StumpyPete_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"StumpyPete/StumpyPete_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"StumpyPete/StumpyPete_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"StumpyPete/StumpyPete_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"StumpyPete/StumpyPete_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"StumpyPete/StumpyPete_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Truck":{"arm_lower_far":{"arm_lower_far":{"name":"Truck/TruckMatthews_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"Truck/TruckMatthews_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"Truck/TruckMatthews_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"Truck/TruckMatthews_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"Truck/TruckMatthews_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"Truck/TruckMatthews_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"Truck/TruckMatthews_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"Truck/TruckMatthews_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"Truck/TruckMatthews_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"Truck/TruckMatthews_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"Truck/TruckMatthews_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"Truck/TruckMatthews_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"Truck/TruckMatthews_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"Truck/TruckMatthews_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"Truck/TruckMatthews_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"Truck/TruckMatthews_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"Truck/TruckMatthews_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"Truck/TruckMatthews_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"Truck/TruckMatthews_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"Truck/TruckMatthews_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"Truck/TruckMatthews_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"Truck/TruckMatthews_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}},"Turbo":{"arm_lower_far":{"arm_lower_far":{"name":"TurboTed/TurboTed_arm_lower_far","x":29.65,"y":1.56,"rotation":92.05,"width":86,"height":122}},"arm_lower_near":{"arm_lower_near":{"name":"TurboTed/TurboTed_arm_lower_near","x":34.59,"y":1.25,"rotation":94.11,"width":86,"height":122}},"arm_upper_far":{"upper_far":{"name":"TurboTed/TurboTed_arm_upper_far","x":38.3,"y":1.81,"rotation":89.14,"width":133,"height":180}},"arm_upper_near":{"arm_upper_near":{"name":"TurboTed/TurboTed_arm_upper_near","x":48.21,"y":1.27,"rotation":89.81,"width":132,"height":182}},"foot_far":{"foot_far_1":{"name":"TurboTed/TurboTed_foot_far_1","x":38.73,"y":-2.95,"rotation":25.39,"width":181,"height":88},"foot_far_2_bent":{"name":"TurboTed/TurboTed_foot_far_2_bent","x":35.11,"y":11.06,"rotation":25.39,"width":179,"height":108}},"foot_near":{"foot_near_1":{"name":"TurboTed/TurboTed_foot_near_1","x":32,"y":-1.69,"rotation":20.57,"width":181,"height":88},"foot_near_2_bent":{"name":"TurboTed/TurboTed_foot_near_2_bent","x":31.15,"y":14.35,"rotation":20.57,"width":179,"height":108}},"hand_far":{"hand_1_fistBack":{"name":"TurboTed/TurboTed_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":99,"height":91},"hand_2_fistPalm":{"name":"TurboTed/TurboTed_hand_2_fistPalm","x":35.42,"y":5.82,"rotation":83.76,"width":99,"height":91}},"hand_near":{"hand_1_fistBack":{"name":"TurboTed/TurboTed_hand_1_fistBack","x":28.67,"y":8.17,"rotation":91.61,"width":112,"height":87},"hand_2_fistPalm":{"name":"TurboTed/TurboTed_hand_2_fistPalm","x":28.67,"y":8.17,"rotation":91.61,"width":99,"height":91}},"head":{"head_1":{"name":"TurboTed/TurboTed_head_1","x":55.54,"y":-12.54,"rotation":276.72,"width":282,"height":253},"head_2_injured":{"name":"TurboTed/TurboTed_head_2_injured","x":55.54,"y":-12.55,"rotation":276.72,"width":282,"height":263}},"leg_lower_far":{"leg_lower_far":{"name":"TurboTed/TurboTed_leg_lower_far","x":48.1,"y":-11.03,"rotation":95.15,"width":149,"height":193}},"leg_lower_near":{"leg_lower_near_1":{"name":"TurboTed/TurboTed_leg_lower_near_1","x":82.08,"y":-10.15,"rotation":96.62,"width":149,"height":201},"leg_lower_near_2":{"name":"TurboTed/TurboTed_leg_lower_near_2","x":67.18,"y":-11.93,"rotation":97.38,"width":149,"height":193}},"leg_upper_far":{"leg_upper_far":{"name":"TurboTed/TurboTed_leg_upper_far","x":53.86,"y":1.02,"rotation":88.54,"width":76,"height":163}},"leg_upper_near":{"leg_upper_near":{"name":"TurboTed/TurboTed_leg_upper_near","x":51.78,"y":-3.62,"rotation":87.64,"width":76,"height":163}},"neck":{"neck":{"name":"TurboTed/TurboTed_neck","x":21.06,"y":0.81,"rotation":-90,"width":85,"height":68}},"torso":{"torso":{"name":"TurboTed/TurboTed_torso","x":82.91,"y":6.8,"rotation":-90,"width":153,"height":183}},"waist":{"head_2_injured":{"name":"TurboTed/TurboTed_waist","x":-11.15,"y":-7.3,"rotation":93.6,"width":115,"height":119}}},"Young":{"arm_lower_far":{"arm_lower_far":{"name":"YoungBuck/YoungBuck_arm_lower_far","x":44.7,"y":6.2,"rotation":92.05,"width":259,"height":209}},"arm_lower_near":{"arm_lower_near":{"name":"YoungBuck/YoungBuck_arm_lower_near","x":41.26,"y":4.61,"rotation":90.37,"width":258,"height":208}},"arm_upper_far":{"upper_far":{"name":"YoungBuck/YoungBuck_arm_upper_far","x":36.95,"y":6,"rotation":89.14,"width":299,"height":282}},"arm_upper_near":{"arm_upper_near":{"name":"YoungBuck/YoungBuck_arm_upper_near","x":46.84,"y":3.11,"rotation":89.81,"width":299,"height":282}},"foot_far":{"foot_far_1":{"name":"YoungBuck/YoungBuck_foot_far_1","x":43.9,"y":1.13,"rotation":25.39,"width":324,"height":176},"foot_far_2_bent":{"name":"YoungBuck/YoungBuck_foot_far_2_bent","x":46.53,"y":18.11,"rotation":25.39,"width":305,"height":195}},"foot_near":{"foot_near_1":{"name":"YoungBuck/YoungBuck_foot_near_1","x":34.61,"y":-0.71,"rotation":20.57,"width":324,"height":176},"foot_near_2_bent":{"name":"YoungBuck/YoungBuck_foot_near_2_bent","x":37.54,"y":16.75,"rotation":20.57,"width":305,"height":195}},"hand_far":{"hand_1_fistBack":{"name":"YoungBuck/YoungBuck_hand_far_1_fistBack","x":47.99,"y":2.58,"rotation":83.76,"width":203,"height":160},"hand_2_fistPalm":{"name":"YoungBuck/YoungBuck_hand_far_2_fistPalm","x":47.76,"y":2.02,"rotation":83.76,"width":203,"height":160}},"hand_near":{"hand_1_fistBack":{"name":"YoungBuck/YoungBuck_hand_near_1_fistBack","x":40.05,"y":8.67,"rotation":91.61,"width":203,"height":160},"hand_2_fistPalm":{"name":"YoungBuck/YoungBuck_hand_near_2_fistPalm","x":39.37,"y":7.65,"rotation":91.61,"width":203,"height":160}},"head":{"head_1":{"name":"YoungBuck/YoungBuck_head_1","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543},"head_2_injured":{"name":"YoungBuck/YoungBuck_head_2_injured","x":161.15,"y":-20.89,"rotation":276.72,"width":543,"height":543}},"leg_lower_far":{"leg_lower_far":{"name":"YoungBuck/YoungBuck_leg_lower_far","x":60.75,"y":-3.44,"rotation":90.14,"width":194,"height":325}},"leg_lower_near":{"leg_lower_near_1":{"name":"YoungBuck/YoungBuck_leg_lower_near_1","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325},"leg_lower_near_2":{"name":"YoungBuck/YoungBuck_leg_lower_near_2","x":79.03,"y":-7.42,"rotation":88.77,"width":194,"height":325}},"leg_upper_far":{"leg_upper_far":{"name":"YoungBuck/YoungBuck_leg_upper_far","x":53.17,"y":-0.59,"rotation":90.48,"width":177,"height":271}},"leg_upper_near":{"leg_upper_near":{"name":"YoungBuck/YoungBuck_leg_upper_near","x":52.3,"y":-5.24,"rotation":86.72,"width":177,"height":271}},"neck":{"neck":{"name":"YoungBuck/YoungBuck_neck","x":18.74,"y":1.98,"rotation":-90,"width":130,"height":110}},"torso":{"torso":{"name":"YoungBuck/YoungBuck_torso","x":99.38,"y":4.97,"rotation":-90,"width":512,"height":452}},"waist":{"head_2_injured":{"name":"YoungBuck/YoungBuck_waist","x":-6.24,"y":-7.61,"rotation":93.6,"width":283,"height":216}}}},"events":{"Hit":{},"Hold End":{},"Hold Start":{},"Move End":{},"Move Start":{}},"animations":{"block":{"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":9.01,"curve":[0.266,0.56,0.573,0.99]},{"time":0.0667,"angle":8.52},{"time":0.2667,"angle":10.8,"curve":[0.483,0,0.695,0.6]},{"time":0.4,"angle":9.01}]},"arm_lower_near":{"rotate":[{"time":0,"angle":11.64,"curve":[0.266,0.56,0.573,0.99]},{"time":0.0667,"angle":12.89},{"time":0.2667,"angle":7.14,"curve":[0.483,0,0.695,0.6]},{"time":0.4,"angle":11.64}]},"arm_upper_far":{"rotate":[{"time":0,"angle":51.17,"curve":[0.266,0.56,0.573,0.99]},{"time":0.0667,"angle":50.16},{"time":0.2667,"angle":54.8,"curve":[0.483,0,0.695,0.6]},{"time":0.4,"angle":51.17}],"translate":[{"time":0,"x":3.47,"y":-12.5}]},"arm_upper_near":{"rotate":[{"time":0,"angle":125.67,"curve":[0.266,0.56,0.573,0.99]},{"time":0.0667,"angle":124.74},{"time":0.2667,"angle":-230.98,"curve":[0.483,0,0.695,0.6]},{"time":0.4,"angle":125.67}],"translate":[{"time":0,"x":-7.12,"y":-54.05}]},"foot_far":{"rotate":[{"time":0,"angle":6.05,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":4.16,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":6.05}],"translate":[{"time":0,"x":0.11,"y":-0.75,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"x":0,"y":0,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"x":0.11,"y":-0.75}]},"foot_near":{"rotate":[{"time":0,"angle":13.01,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":5.63,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":13.01}],"translate":[{"time":0,"x":-0.3,"y":0.97,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"x":-1.26,"y":2.24,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"x":-0.3,"y":0.97}]},"head":{"rotate":[{"time":0,"angle":-4.55,"curve":[0.382,0.57,0.735,1]},{"time":0.0667,"angle":-3.96},{"time":0.2667,"angle":-6.03,"curve":[0.243,0,0.648,0.6]},{"time":0.4,"angle":-4.55}],"translate":[{"time":0,"x":-29.29,"y":7.39,"curve":[0.382,0.57,0.735,1]},{"time":0.0667,"x":-30.46,"y":7.25},{"time":0.2667,"x":-26.34,"y":7.74,"curve":[0.243,0,0.648,0.6]},{"time":0.4,"x":-29.29,"y":7.39}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-31.47,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":-25.58,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":-31.47}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-30.81,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":-14.42,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":-30.81}],"translate":[{"time":0,"x":0.29,"y":2.05,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"x":0,"y":0,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"x":0.29,"y":2.05}],"scale":[{"time":0,"x":0.899,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":28.65,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":26.3,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":28.65}]},"leg_upper_near":{"rotate":[{"time":0,"angle":22.72,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":15.12,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":22.72}],"scale":[{"time":0,"x":0.91,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-6.88,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":-6.07,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":-6.88}],"translate":[{"time":0,"x":-8.53,"y":-40.31,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"x":-8.53,"y":-32.01,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"x":-8.53,"y":-40.31}]},"waist":{"rotate":[{"time":0,"angle":2.46,"curve":[0.46,0,0.533,0.99]},{"time":0.2,"angle":0,"curve":[0.46,0,0.533,0.99]},{"time":0.4,"angle":2.46}],"translate":[{"time":0,"x":2.12,"y":0.22}]}}},"crouchIdle":{"slots":{"foot_near":{"attachment":[{"time":0,"name":"foot_near_2_bent"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-15.23,"curve":[0.612,0,0.439,1]},{"time":0.2,"angle":-21.94,"curve":[0.25,0,0.75,1]},{"time":0.4,"angle":-15.23}]},"arm_lower_near":{"rotate":[{"time":0,"angle":19.72,"curve":[0.382,0.57,0.735,1]},{"time":0.0667,"angle":20.86},{"time":0.2667,"angle":16.82,"curve":[0.243,0,0.648,0.6]},{"time":0.4,"angle":19.72}]},"arm_upper_far":{"rotate":[{"time":0,"angle":22.86}],"translate":[{"time":0,"x":5.86,"y":-7.5}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-36.58,"curve":[0.215,0.57,0.498,1]},{"time":0.0667,"angle":-37.35},{"time":0.2667,"angle":-33.43,"curve":[0.65,0,0.744,0.6]},{"time":0.4,"angle":-36.58}]},"foot_far":{"rotate":[{"time":0,"angle":0,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":2.4,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":-16.17,"y":-0.22}]},"foot_near":{"rotate":[{"time":0,"angle":-269.2,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":85.76,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":-269.2}],"translate":[{"time":0,"x":-12.44,"y":59.42,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"x":-7.18,"y":58.48,"curve":[0.612,0,0.439,1]},{"time":0.4,"x":-12.44,"y":59.42}]},"hand_far":{"rotate":[{"time":0,"angle":0,"curve":[0.612,0,0.439,1]},{"time":0.2,"angle":5.93,"curve":[0.25,0,0.75,1]},{"time":0.4,"angle":0}]},"head":{"rotate":[{"time":0,"angle":18.76,"curve":[0.263,0.62,0.586,1]},{"time":0.0333,"angle":18.61},{"time":0.2333,"angle":22.23,"curve":[0.659,0,0.613,0.75]},{"time":0.4,"angle":18.76}],"translate":[{"time":0,"x":-51.14,"y":-32.84,"curve":[0.257,0.61,0.579,0.99]},{"time":0.0333,"x":-51.3,"y":-32.9},{"time":0.2333,"x":-51.6,"y":-32.52,"curve":[0.7,0,0.6,0.74]},{"time":0.4,"x":-51.14,"y":-32.84}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-71.31,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":-67.2,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":-71.31}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-88.66,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":-84.53,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":-88.66}],"translate":[{"time":0,"x":15.89,"y":10.52,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"x":11.73,"y":12.39,"curve":[0.612,0,0.439,1]},{"time":0.4,"x":15.89,"y":10.52}]},"leg_upper_far":{"rotate":[{"time":0,"angle":73.33,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":66.19,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":73.33}]},"torso":{"rotate":[{"time":0,"angle":-23.95,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":-25.07,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":-23.95}],"translate":[{"time":0,"x":-23.1,"y":-143.28,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"x":-23.1,"y":-134.03,"curve":[0.612,0,0.439,1]},{"time":0.4,"x":-23.1,"y":-143.28}]},"waist":{"rotate":[{"time":0,"angle":-337.63,"curve":[0.641,0,0.404,0.99]},{"time":0.2,"angle":24.66,"curve":[0.612,0,0.439,1]},{"time":0.4,"angle":-337.63}],"translate":[{"time":0,"x":1.87,"y":-4.22}]}}},"crouchWalk":{"slots":{"foot_far":{"attachment":[{"time":0,"name":"foot_far_1"},{"time":0.4333,"name":"foot_far_2_bent"},{"time":0.6,"name":"foot_far_2_bent"},{"time":0.7667,"name":"foot_far_1"}]},"foot_near":{"attachment":[{"time":0,"name":"foot_near_2_bent"},{"time":0.1667,"name":"foot_near_1"},{"time":0.6,"name":"foot_near_1"},{"time":1.0333,"name":"foot_near_2_bent"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-21.94,"curve":[0.509,0.01,0.922,0.5]},{"time":0.3,"angle":-31.14,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"angle":-27.36,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"angle":-26.12,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"angle":-21.94}]},"arm_lower_near":{"rotate":[{"time":0,"angle":19.72,"curve":[0.509,0.01,0.922,0.5]},{"time":0.3,"angle":-0.91,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"angle":-5.53,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"angle":-13.55,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"angle":19.72}]},"arm_upper_far":{"rotate":[{"time":0,"angle":22.86,"curve":[0.509,0.01,0.922,0.5]},{"time":0.3,"angle":18.96,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"angle":38.52,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"angle":29.5,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"angle":22.86}],"translate":[{"time":0,"x":3.56,"y":-2.59,"curve":"stepped"},{"time":0.3,"x":3.56,"y":-2.59,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"x":9.11,"y":-13.45,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"x":6.61,"y":-8.64,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"x":3.56,"y":-2.59}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-36.58,"curve":[0.509,0.01,0.922,0.5]},{"time":0.3,"angle":-15,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"angle":-24.43,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"angle":-8.75,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"angle":-36.58}],"translate":[{"time":0,"x":3.44,"y":-7.36,"curve":"stepped"},{"time":0.3,"x":3.44,"y":-7.36,"curve":[0.124,0.56,0.509,0.95]},{"time":0.6,"x":-5.85,"y":10.69,"curve":[0.477,0.09,0.893,0.54]},{"time":0.9,"x":-0.85,"y":1.07,"curve":[0.132,0.54,0.492,0.98]},{"time":1.2,"x":3.44,"y":-7.36}]},"foot_far":{"rotate":[{"time":0,"angle":2.4,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"angle":21.98,"curve":[0.385,0.18,0.819,0.55]},{"time":0.3,"angle":57.27,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":85.81,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"angle":112.08,"curve":[0.441,0,0.756,0.39]},{"time":0.7333,"angle":86.63,"curve":[0.357,0.3,0.689,0.64]},{"time":0.7667,"angle":50.84,"curve":[0.355,0.31,0.687,0.65]},{"time":0.8,"angle":36.72,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"angle":5.38,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"angle":0.58,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":4.8,"curve":[0.436,0.11,0.892,0.56]},{"time":1.2,"angle":2.4}],"translate":[{"time":0,"x":-16.17,"y":-0.22,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"x":-8.58,"y":5.46,"curve":[0.385,0.18,0.819,0.55]},{"time":0.3,"x":-1.33,"y":11.43,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"x":17.24,"y":43.13,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"x":-4.02,"y":74.63,"curve":[0.441,0,0.756,0.39]},{"time":0.7333,"x":13.51,"y":63.08,"curve":[0.357,0.3,0.689,0.64]},{"time":0.7667,"x":-12.4,"y":25.26,"curve":[0.355,0.31,0.687,0.65]},{"time":0.8,"x":-8.54,"y":17.23,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"x":-7.74,"y":12.22,"curve":[0.215,0.5,0.416,1]},{"time":1.2,"x":-16.17,"y":-0.22}]},"foot_near":{"rotate":[{"time":0,"angle":85.76,"curve":[0.397,0,0.724,0.36]},{"time":0.1333,"angle":72.06,"curve":[0.349,0.3,0.682,0.63]},{"time":0.1667,"angle":9.11,"curve":[0.349,0.3,0.681,0.64]},{"time":0.2,"angle":-32.93,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"angle":-27.65,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":-14.71,"curve":[0.265,0.42,0.582,0.78]},{"time":0.5333,"angle":-25.27,"curve":[0.093,0.64,0.362,0.92]},{"time":0.6,"angle":-23.18,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"angle":-10.19,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"angle":26.09,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"angle":55.01,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":71.22,"curve":[0.22,0.18,0.743,0.42]},{"time":1.2,"angle":85.76}],"translate":[{"time":0,"x":-7.18,"y":58.48,"curve":[0.397,0,0.724,0.36]},{"time":0.1333,"x":12.11,"y":52.22,"curve":[0.349,0.3,0.682,0.63]},{"time":0.1667,"x":-8.32,"y":27.83,"curve":[0.349,0.3,0.681,0.64]},{"time":0.2,"x":-8.95,"y":11.01,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"x":-15.85,"y":7.62,"curve":[0.223,0.48,0.403,1]},{"time":0.6,"x":-21.19,"y":1.67,"curve":"stepped"},{"time":0.9,"x":-21.19,"y":1.67,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"x":8.73,"y":27.99,"curve":[0.227,0.59,0.527,1]},{"time":1.2,"x":-7.18,"y":58.48}]},"hand_far":{"rotate":[{"time":0,"angle":5.93}]},"head":{"rotate":[{"time":0,"angle":18.76,"curve":[0.126,0.57,0.464,0.97]},{"time":0.1667,"angle":15.72,"curve":[0.25,0,0.917,0.41]},{"time":0.3333,"angle":12.63,"curve":[0.101,0.55,0.75,1]},{"time":0.5,"angle":16.2,"curve":[0.25,0,0.898,0.39]},{"time":0.6,"angle":20.09,"curve":[0.158,0.59,0.75,1]},{"time":0.7667,"angle":16.49,"curve":[0.25,0,0.936,0.36]},{"time":0.9333,"angle":15.64,"curve":[0.16,0.6,0.75,1]},{"time":1.0667,"angle":21.05,"curve":[0.25,0,0.898,0.51]},{"time":1.2,"angle":18.76}],"translate":[{"time":0,"x":-52.78,"y":-33.06}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-67.2,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"angle":-83.31,"curve":[0.055,0.49,0.414,0.86]},{"time":0.3,"angle":-83.78,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":-84.39,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"angle":-60.17,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"angle":-79.84,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"angle":-86.32,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"angle":-91.57,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":-66.61,"curve":[0.436,0.11,0.892,0.56]},{"time":1.2,"angle":-67.2}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.501,0,0.788,0.42]},{"time":0.2,"x":-0.16,"y":-2.7,"curve":[0.055,0.49,0.414,0.86]},{"time":0.3,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-84.53,"curve":[0.433,0,0.751,0.38]},{"time":0.2,"angle":-119.1,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"angle":-133.7,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":-110.5,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"angle":-92.02,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"angle":-107.71,"curve":[0.64,0,1,0.33]},{"time":0.9,"angle":-96.21,"curve":"stepped"},{"time":1.0333,"angle":-96.21,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":-79.48,"curve":[0.22,0.18,0.743,0.42]},{"time":1.2,"angle":-84.53}],"translate":[{"time":0,"x":11.73,"y":12.39,"curve":[0.433,0,0.751,0.38]},{"time":0.2,"x":16.79,"y":10.03,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"x":24.47,"y":6.79,"curve":[0.223,0.48,0.403,1]},{"time":0.6,"x":11.73,"y":12.39,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"x":15.62,"y":8.16,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"x":11.73,"y":12.39}]},"leg_upper_far":{"rotate":[{"time":0,"angle":66.19,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"angle":62.46,"curve":[0.441,0.08,0.852,0.56]},{"time":0.3,"angle":23.32,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":-9.82,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"angle":-51.43,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"angle":-30.45,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"angle":4.73,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"angle":49.22,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":54.76,"curve":[0.436,0.11,0.892,0.56]},{"time":1.2,"angle":66.19}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"x":0.1,"y":-5.08,"curve":[0.441,0.08,0.852,0.56]},{"time":0.3,"x":0.29,"y":-14.9,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"x":-4.96,"y":-59.49,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"x":-8.83,"y":-59.48,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"x":-9.25,"y":-55.44,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"x":-3.46,"y":-58.8,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"x":-3.8,"y":-13.76,"curve":[0.227,0.59,0.527,1]},{"time":1.2,"x":0,"y":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.433,0,0.751,0.38]},{"time":0.2,"angle":36.08,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"angle":73.93,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"angle":99.46,"curve":[0.265,0.42,0.582,0.78]},{"time":0.5333,"angle":110.68,"curve":[0.577,0.13,0.914,0.52]},{"time":0.6,"angle":118.78,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"angle":121.14,"curve":[0.513,0.16,0.785,0.54]},{"time":0.9,"angle":73.71,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"angle":44.78,"curve":[0.289,0.38,0.616,0.73]},{"time":1.1,"angle":12.31,"curve":[0.22,0.18,0.743,0.42]},{"time":1.2,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.433,0,0.751,0.38]},{"time":0.2,"x":-5.31,"y":-1.73,"curve":[0.444,0.25,0.734,0.61]},{"time":0.3,"x":-8.39,"y":13.38,"curve":[0.317,0.34,0.608,0.7]},{"time":0.4333,"x":-7.85,"y":33.7,"curve":[0.222,0.58,0.518,1]},{"time":0.6,"x":-6.92,"y":43.46,"curve":[0.501,0,0.788,0.42]},{"time":0.8,"x":-6.08,"y":35.37,"curve":[0.381,0.3,0.693,0.65]},{"time":0.9,"x":-5.72,"y":34.05,"curve":[0.304,0.35,0.601,0.71]},{"time":1.0333,"x":-5.98,"y":14.89,"curve":[0.227,0.59,0.527,1]},{"time":1.2,"x":0,"y":0}]},"torso":{"rotate":[{"time":0,"angle":-25.07,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"angle":-27.79,"curve":[0.49,0.01,0.865,0.41]},{"time":0.3,"angle":-23.98,"curve":[0.139,0.47,0.483,0.93]},{"time":0.4333,"angle":-21.25,"curve":[0.482,0.01,0.947,0.5]},{"time":0.6,"angle":-28.67,"curve":[0.039,0.26,0.41,0.96]},{"time":0.8,"angle":-30.45,"curve":[0.567,0.05,0.885,0.49]},{"time":0.9,"angle":-27.44,"curve":[0.115,0.46,0.474,0.9]},{"time":1.0333,"angle":-26.63,"curve":[0.505,0.02,0.952,0.47]},{"time":1.2,"angle":-25.07}],"translate":[{"time":0,"x":-23.1,"y":-134.03,"curve":[0.489,0,0.783,0.42]},{"time":0.2,"x":-23.1,"y":-128.61,"curve":[0.49,0.01,0.865,0.41]},{"time":0.3,"x":-23.1,"y":-115.78,"curve":[0.139,0.47,0.483,0.93]},{"time":0.4333,"x":-23.1,"y":-104.22,"curve":[0.482,0.01,0.947,0.5]},{"time":0.6,"x":-23.1,"y":-127.8,"curve":[0.039,0.26,0.41,0.96]},{"time":0.8,"x":-23.1,"y":-131.32,"curve":[0.567,0.05,0.885,0.49]},{"time":0.9,"x":-23.1,"y":-102.87,"curve":[0.115,0.46,0.474,0.9]},{"time":1.0333,"x":-23.1,"y":-98.8,"curve":[0.505,0.02,0.952,0.47]},{"time":1.2,"x":-23.1,"y":-134.03}]},"waist":{"rotate":[{"time":0,"angle":24.66,"curve":[0.501,0,0.788,0.42]},{"time":0.2,"angle":-332.66,"curve":[0.133,0.38,0.457,0.76]},{"time":0.3,"angle":27.33,"curve":[0.055,0.59,0.932,0.41]},{"time":0.6,"angle":-333.61,"curve":[0.039,0.26,0.41,0.96]},{"time":0.8,"angle":-331.84,"curve":[0.567,0.05,0.885,0.49]},{"time":0.9,"angle":23.79,"curve":[0.115,0.46,0.474,0.9]},{"time":1.0333,"angle":-337.11,"curve":[0.505,0.02,0.952,0.47]},{"time":1.2,"angle":24.66}],"translate":[{"time":0,"x":1.87,"y":-4.22}]}}},"empty":{},"floorGetUp":{"slots":{"head":{"attachment":[{"time":0,"name":"head_2_injured"},{"time":0.087,"name":"head_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"},{"time":0.1667,"name":"leg_lower_near_2"},{"time":0.4,"name":"leg_lower_near_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-91.19,"curve":"stepped"},{"time":0.1667,"angle":-91.19,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":-97.26,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":12.92,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-80.14,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":19.06,"curve":[0.223,0,0.718,0.39]},{"time":0.3333,"angle":-91.49,"curve":[0.487,0.3,0.851,0.63]},{"time":0.4,"angle":-86.13,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":8.34,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"arm_upper_far":{"rotate":[{"time":0,"angle":-9.2,"curve":"stepped"},{"time":0.1667,"angle":-9.2,"curve":[0.223,0,0.718,0.39]},{"time":0.3333,"angle":312.29,"curve":[0.487,0.3,0.851,0.63]},{"time":0.4,"angle":339.82,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":11.19,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":0.87,"y":8.25,"curve":"stepped"},{"time":0.1667,"x":0.87,"y":8.25,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":-8.07,"y":51.26,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":47.96,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-13.15,"curve":[0.223,0,0.718,0.39]},{"time":0.3333,"angle":20.05,"curve":[0.487,0.3,0.851,0.63]},{"time":0.4,"angle":31.48,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":-7.05,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"foot_far":{"rotate":[{"time":0,"angle":-24.46,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-13.12,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":14.83,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":7.15,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"foot_near":{"rotate":[{"time":0,"angle":-33.28,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-80.83,"curve":[0.224,0,0.629,0.37]},{"time":0.2667,"angle":-77.28,"curve":[0.368,0.28,0.719,0.61]},{"time":0.3333,"angle":-38.22,"curve":[0.487,0.3,0.851,0.63]},{"time":0.4,"angle":47.03,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":9.26,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"hand_far":{"rotate":[{"time":0.1667,"angle":0,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":3.21,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":0}]},"head":{"rotate":[{"time":0,"angle":-10.48,"curve":[0.579,0.01,0.783,0.51]},{"time":0.087,"angle":-33.56,"curve":[0.215,0.5,0.441,0.98]},{"time":0.1667,"angle":-30.86,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":-12.61,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":-9.93,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":-2.24,"curve":[0.106,0.3,0.75,1]},{"time":0.7,"angle":0}],"translate":[{"time":0,"x":-9.24,"y":-28.24,"curve":[0.579,0.01,0.783,0.51]},{"time":0.087,"x":-26.15,"y":-0.06,"curve":[0.215,0.5,0.441,0.98]},{"time":0.1667,"x":-14.53,"y":3.81,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":-18.45,"y":-2.9,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":-4.15,"y":0,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":-1,"curve":"stepped"},{"time":0.087,"x":1,"y":1}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-20.69,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-107.74,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":-82.26,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":-21.87,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-4.04,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-74.06,"curve":[0.224,0,0.629,0.37]},{"time":0.2667,"angle":-105.76,"curve":[0.368,0.28,0.719,0.61]},{"time":0.3333,"angle":-145.12,"curve":[0.388,0.31,0.728,0.65]},{"time":0.3667,"angle":-143.39,"curve":[0.457,0.31,0.8,0.65]},{"time":0.4,"angle":-116.2,"curve":[0.158,0.45,0.536,0.77]},{"time":0.4667,"angle":-53.66,"curve":[0.306,0.57,0.669,0.88]},{"time":0.5333,"angle":-25.8,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}],"translate":[{"time":0.1667,"x":0,"y":0,"curve":[0.224,0,0.629,0.37]},{"time":0.2667,"x":11.97,"y":6.75,"curve":[0.368,0.28,0.719,0.61]},{"time":0.3333,"x":23.72,"y":3.99,"curve":[0.487,0.3,0.851,0.63]},{"time":0.4,"x":20.09,"y":3.78,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":0,"y":0}],"scale":[{"time":0.4,"x":1,"y":1,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":0.953,"y":1,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"x":1,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":-7.15,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":20.08,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":75.78,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":13.79,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":-0.52,"y":-12.44,"curve":"stepped"},{"time":0.1667,"x":-0.52,"y":-12.44,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"x":0.915,"y":1,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":1,"y":1}]},"leg_upper_near":{"rotate":[{"time":0,"angle":17.52,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":62.21,"curve":[0.224,0,0.629,0.37]},{"time":0.2667,"angle":101.28,"curve":[0.368,0.28,0.719,0.61]},{"time":0.3333,"angle":129.33,"curve":[0.388,0.31,0.728,0.65]},{"time":0.3667,"angle":127.37,"curve":[0.457,0.31,0.8,0.65]},{"time":0.4,"angle":76.61,"curve":[0.158,0.45,0.536,0.77]},{"time":0.4667,"angle":35,"curve":[0.306,0.57,0.669,0.88]},{"time":0.5333,"angle":16.21,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":0.35,"y":8.29,"curve":"stepped"},{"time":0.1667,"x":0.35,"y":8.29,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"x":0.828,"y":1,"curve":[0.223,0,0.718,0.39]},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":0.941,"y":1,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":96.04,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":54.06,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":-8.94,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":-2.7,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":0,"y":-213.82,"curve":"stepped"},{"time":0.1667,"x":0,"y":-213.82,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"x":0,"y":-120.4,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"x":0,"y":-20.75,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"x":0,"y":0}]},"waist":{"rotate":[{"time":0,"angle":0,"curve":[0.577,0.01,0.439,0.98]},{"time":0.1667,"angle":-312.11,"curve":[0.25,0,0.904,0.42]},{"time":0.4,"angle":0,"curve":[0.125,0.64,0.601,0.93]},{"time":0.5333,"angle":2.5,"curve":[0.077,0.43,0.75,1]},{"time":0.6333,"angle":0}]}}},"floorIdle":{"slots":{"head":{"attachment":[{"time":0,"name":"head_2_injured"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-91.19,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-82.61,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-91.19}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-80.14,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-73.77,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-80.14}]},"arm_upper_far":{"rotate":[{"time":0,"angle":-9.2,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":342.35,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-9.2}],"translate":[{"time":0,"x":0.87,"y":8.25}]},"arm_upper_near":{"rotate":[{"time":0,"angle":47.96,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":44.14,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":47.96}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"x":-1.05,"y":-7.37,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":-24.46,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-17.34,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-24.46}]},"foot_near":{"rotate":[{"time":0,"angle":-33.28,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-26.17,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-33.28}]},"head":{"rotate":[{"time":0,"angle":-10.48,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-14.52,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-10.48}],"translate":[{"time":0,"x":-9.24,"y":-28.24}],"scale":[{"time":0,"x":1,"y":-1}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-20.69,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-29.12,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-20.69}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-4.04,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-16.25,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-4.04}]},"leg_upper_far":{"rotate":[{"time":0,"angle":-7.15,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-1.85,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":-7.15}],"translate":[{"time":0,"x":-0.52,"y":-12.44}]},"leg_upper_near":{"rotate":[{"time":0,"angle":17.52,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":25.67,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":17.52}],"translate":[{"time":0,"x":0.35,"y":8.29}]},"torso":{"rotate":[{"time":0,"angle":96.04,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-262.65,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":96.04}],"translate":[{"time":0,"x":0,"y":-213.82,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"x":0,"y":-211.75,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"x":0,"y":-213.82}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"x":1,"y":1.11,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"x":1,"y":1}]},"waist":{"rotate":[{"time":0,"angle":0,"curve":[0.577,0.01,0.463,0.99]},{"time":0.5667,"angle":-1.98,"curve":[0.406,0,0.209,0.99]},{"time":1.1667,"angle":0}]}}},"hideSword":{},"hitBig":{"slots":{"head":{"attachment":[{"time":0,"name":"head_1"},{"time":0.0333,"name":"head_2_injured"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_1"},{"time":0.0333,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-54.22},{"time":0.1,"angle":-91.19,"curve":"stepped"},{"time":0.1667,"angle":-91.19},{"time":0.2667,"angle":-82.57,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-89.9,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":-91.19}]},"arm_lower_near":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-50.04},{"time":0.1,"angle":-80.14,"curve":"stepped"},{"time":0.2667,"angle":-80.14,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-68.87,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":-80.14}]},"arm_upper_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":34.21},{"time":0.1,"angle":45.81,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":323.26},{"time":0.2667,"angle":4.14,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-9.2}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":0.29,"y":2.75},{"time":0.1,"x":0.87,"y":8.25}]},"arm_upper_near":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":98.97},{"time":0.1,"angle":-247.23,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":28.95},{"time":0.2667,"angle":-289.32,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":47.96}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-3.97,"y":-10.19},{"time":0.1,"x":-11.92,"y":-30.58,"curve":"stepped"},{"time":0.1667,"x":-11.92,"y":-30.58},{"time":0.2667,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-9.01},{"time":0.1,"angle":-27.05,"curve":"stepped"},{"time":0.1667,"angle":-27.05},{"time":0.2667,"angle":-24.46}]},"foot_near":{"rotate":[{"time":0,"angle":0,"curve":[0.479,0.05,0.844,0.45]},{"time":0.0165,"angle":-9.52},{"time":0.0333,"angle":-59.33},{"time":0.1,"angle":-52.83,"curve":"stepped"},{"time":0.1667,"angle":-52.83},{"time":0.2667,"angle":-33.28}]},"hand_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":7.22},{"time":0.1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-20.77},{"time":0.1,"angle":-22.06,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":-4.4},{"time":0.2667,"angle":-17.99,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-17.2,"curve":[0.052,0.69,0.75,1]},{"time":0.5333,"angle":-10.48}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-2.26,"y":-4.07},{"time":0.1,"x":-6.8,"y":-12.22,"curve":[0,0.86,0.75,1]},{"time":0.1667,"x":-3.32,"y":-34.3},{"time":0.2667,"x":-9.24,"y":-28.24}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1,"x":1,"y":-1}]},"leg_lower_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":2.8},{"time":0.1,"angle":8.4,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":33.57},{"time":0.2667,"angle":-2.65,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-25.24,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":-20.69}]},"leg_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.041,0.3,0.422,0.87]},{"time":0.0165,"angle":-65.64},{"time":0.0333,"angle":-17.5},{"time":0.1,"angle":-4.04,"curve":"stepped"},{"time":0.2667,"angle":-4.04,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-14.23,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":-4.04}]},"leg_upper_far":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-0.76},{"time":0.1,"angle":-2.3,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":-23.21},{"time":0.2667,"angle":-7.15,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-4.06,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":-7.15}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-0.17,"y":-4.14},{"time":0.1,"x":-0.52,"y":-12.44}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.041,0.3,0.422,0.87]},{"time":0.0165,"angle":37.28},{"time":0.0333,"angle":33.65},{"time":0.1,"angle":29.3,"curve":"stepped"},{"time":0.1667,"angle":29.3},{"time":0.2667,"angle":23.12,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":23.9,"curve":[0.052,0.69,0.75,1]},{"time":0.4667,"angle":17.52}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-5.86,"y":5.87},{"time":0.1,"x":0.35,"y":8.29}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-5.9},{"time":0.1,"angle":-17.72,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":-7.99},{"time":0.2667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-2.37,"y":-1.98},{"time":0.1,"x":-7.11,"y":-5.96,"curve":[0,0.86,0.75,1]},{"time":0.1667,"x":-11.13,"y":-4.92},{"time":0.2667,"x":0,"y":0}]},"torso":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":13.6},{"time":0.1,"angle":76.59,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":-249.13},{"time":0.2667,"angle":86.03,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":-263.96}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":0,"y":-29.06},{"time":0.1,"x":0,"y":-232.51,"curve":[0,0.86,0.75,1]},{"time":0.1667,"x":0,"y":-159.85},{"time":0.2667,"x":0,"y":-213.82}]},"waist":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":58.68},{"time":0.1,"angle":-324.78,"curve":[0,0.86,0.75,1]},{"time":0.1667,"angle":-38.14},{"time":0.2667,"angle":-350.96,"curve":[0.25,0,0.936,0.37]},{"time":0.3667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":2.04,"y":0.36},{"time":0.1,"x":0.48,"y":-2.01,"curve":[0,0.86,0.75,1]},{"time":0.1667,"x":3.08,"y":8.02},{"time":0.2667,"x":0,"y":0}]}}},"idle":{"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":4.34,"curve":[0.201,0.49,0.381,0.99]},{"time":0.1,"angle":0},{"time":0.3,"angle":7.59,"curve":[0.624,0,0.821,0.5]},{"time":0.4,"angle":4.34}]},"arm_lower_near":{"rotate":[{"time":0,"angle":2.38,"curve":[0.27,0.56,0.581,0.99]},{"time":0.0667,"angle":0,"curve":[0.428,0,0.533,0.99]},{"time":0.2667,"angle":11.41,"curve":[0.454,0,0.68,0.59]},{"time":0.4,"angle":2.38}]},"arm_upper_far":{"rotate":[{"time":0,"angle":-1,"curve":[0.375,0.5,0.75,1]},{"time":0.1,"angle":0},{"time":0.3,"angle":-2,"curve":[0.25,0,0.625,0.5]},{"time":0.4,"angle":-1}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-1.1,"curve":[0.201,0.56,0.477,0.99]},{"time":0.0667,"angle":0,"curve":[0.428,0,0.533,0.99]},{"time":0.2667,"angle":-5.6,"curve":[0.7,0,0.762,0.6]},{"time":0.4,"angle":-1.1}]},"foot_far":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":3.53,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"x":-0.06,"y":0.76,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":2.44,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}]},"head":{"rotate":[{"time":0,"angle":-0.17,"curve":[0.375,0.5,0.75,1]},{"time":0.1,"angle":1.23,"curve":[0.25,0,0.75,1]},{"time":0.3,"angle":-1.58,"curve":[0.25,0,0.625,0.5]},{"time":0.4,"angle":-0.17}]},"leg_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":-8.54,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":-6.3,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"x":0.973,"y":1,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"x":1,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":4.46,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":2.92,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"x":0.973,"y":1,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":-1.32,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"x":0,"y":-10.94,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"x":0,"y":0}]},"waist":{"rotate":[{"time":0,"angle":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"angle":1.77,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.66,0,0.417,0.99]},{"time":0.2,"x":3.12,"y":0.07,"curve":[0.593,0,0.401,0.99]},{"time":0.4,"x":0,"y":0}]}}},"idleTired":{"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-91.6,"curve":[0.297,0.6,0.624,0.98]},{"time":0.1333,"angle":-90.93,"curve":[0.444,0,0.095,1]},{"time":1.1333,"angle":-98.48,"curve":[0.234,0,0.251,0.84]},{"time":1.6667,"angle":-91.6}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-10.13,"curve":[0.27,0.6,0.593,0.98]},{"time":0.1333,"angle":-10.7,"curve":[0.425,0,0.574,0.99]},{"time":1.1333,"angle":-2.58,"curve":[0.234,0,0.251,0.84]},{"time":1.6667,"angle":-10.13}]},"arm_upper_far":{"rotate":[{"time":0,"angle":-3.43}],"translate":[{"time":0,"x":0.88,"y":-6.28}]},"arm_upper_near":{"rotate":[{"time":0,"angle":74.2,"curve":[0.297,0.6,0.624,0.98]},{"time":0.1333,"angle":-286.17,"curve":[0.444,0,0.095,1]},{"time":1.1333,"angle":-281.83,"curve":[0.234,0,0.251,0.84]},{"time":1.6667,"angle":74.2}],"translate":[{"time":0,"x":2.66,"y":-18.86}]},"foot_far":{"rotate":[{"time":0,"angle":9.97,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":2.03,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":9.97}]},"foot_near":{"rotate":[{"time":0,"angle":18.49,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":4.71,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":18.49}]},"hand_near":{"rotate":[{"time":0,"angle":-0.93,"curve":[0.27,0.6,0.593,0.98]},{"time":0.1333,"angle":0,"curve":[0.425,0,0.574,0.99]},{"time":1.1333,"angle":-13.4,"curve":[0.234,0,0.251,0.84]},{"time":1.6667,"angle":-0.93}],"translate":[{"time":0,"x":0.01,"y":0.4,"curve":[0.297,0.6,0.624,0.98]},{"time":0.1333,"x":0,"y":0,"curve":[0.444,0,0.095,1]},{"time":1.1333,"x":0.19,"y":4.58,"curve":[0.234,0,0.251,0.84]},{"time":1.6667,"x":0.01,"y":0.4}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-27.32,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":-3.08,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":-27.32}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-50.34,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":-16.61,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":-50.34}],"translate":[{"time":0,"x":0.75,"y":3.12,"curve":[0.504,0,0.482,0.99]},{"time":1,"x":0,"y":0,"curve":[0.444,0,0.095,1]},{"time":1.6667,"x":0.75,"y":3.12}]},"leg_upper_far":{"rotate":[{"time":0,"angle":20.74,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":2.03,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":20.74}]},"leg_upper_near":{"rotate":[{"time":0,"angle":32.86,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":10.67,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":32.86}]},"neck":{"rotate":[{"time":0,"angle":-3.15}]},"torso":{"rotate":[{"time":0,"angle":-9.82,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":-6.22,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":-9.82}],"translate":[{"time":0,"x":-3.22,"y":-31.59,"curve":[0.504,0,0.482,0.99]},{"time":1,"x":0,"y":-4.36,"curve":[0.444,0,0.095,1]},{"time":1.6667,"x":-3.22,"y":-31.59}]},"waist":{"rotate":[{"time":0,"angle":7.39,"curve":[0.504,0,0.482,0.99]},{"time":1,"angle":-353.77,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":-352.6}]},"head":{"rotate":[{"time":0,"angle":-10.04,"curve":[0.116,0.48,0.299,1]},{"time":0.5333,"angle":-11.08,"curve":[0.504,0,0.482,0.99]},{"time":1.2,"angle":-6.3,"curve":[0.444,0,0.095,1]},{"time":1.6667,"angle":-10.04}]}}},"jump":{"slots":{"foot_near":{"attachment":[{"time":0,"name":"foot_near_2_bent"},{"time":0.0667,"name":"foot_near_2_bent"},{"time":0.0704,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":22.66,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":25.46,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-85.3,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-27.5,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":13.47}],"translate":[{"time":0.0333,"x":0,"y":0,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"x":-0.87,"y":-4.12,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":1,"y":-2.33}]},"arm_lower_near":{"rotate":[{"time":0,"angle":17.45,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":24.31,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-48.47,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-1.29,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":25.37}]},"arm_upper_far":{"rotate":[{"time":0,"angle":19.93,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":14.86,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":22.39,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":10.22,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":7.8}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":9.42,"y":3.31}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-26.81,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":-35.44,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":8.35,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":38.17,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":35.49}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-8.09,"y":-6.96}]},"foot_far":{"rotate":[{"time":0,"angle":22.57,"curve":"stepped"},{"time":0.0333,"angle":22.57,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-20.53,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":11.98,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":30.86}],"translate":[{"time":0,"x":-5.94,"y":7.58,"curve":"stepped"},{"time":0.0667,"x":-5.94,"y":7.58,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-11.47,"y":1.69}]},"foot_near":{"rotate":[{"time":0,"angle":60.5,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":71.3,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-11.63,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-32.98,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":-8.39}],"translate":[{"time":0,"x":14.35,"y":28.32,"curve":"stepped"},{"time":0.0333,"x":14.35,"y":28.32,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"x":20.24,"y":3.14,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-23.3,"y":3.92}]},"hand_far":{"rotate":[{"time":0.0667,"angle":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":17.54}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":1.97,"y":-7.29}]},"hand_near":{"rotate":[{"time":0.0667,"angle":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":14.82}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":10.01,"y":0.62}]},"head":{"rotate":[{"time":0,"angle":4.29,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":-2.01,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-10.25,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-13.41,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":-21.77}],"translate":[{"time":0,"x":-21.3,"y":0.27,"curve":"stepped"},{"time":0.0667,"x":-21.3,"y":0.27,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-62.58,"y":1.23,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"x":-69.56,"y":4.04}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-72.82,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":-89.46,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":15.1,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-86.26,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":-113.01}],"translate":[{"time":0,"x":-9.08,"y":-2.89,"curve":"stepped"},{"time":0.0333,"x":-9.08,"y":-2.89,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"x":-8.01,"y":-0.29,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-9.03,"y":1.69}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-91.58,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":-104.28,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":4.97,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-121.3,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":-153.92}],"translate":[{"time":0,"x":11.93,"y":12.99,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"x":14.76,"y":11.24,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"x":11.33,"y":-5.3,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":18.52,"y":1.28}]},"leg_upper_far":{"rotate":[{"time":0,"angle":51.75,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":67.56,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-1.68,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":47.13,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":60.8}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"x":-0.11,"y":1.04,"curve":"stepped"},{"time":0.0667,"x":-0.11,"y":1.04,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-12.86,"y":-3.39}]},"leg_upper_near":{"rotate":[{"time":0,"angle":31.21,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"angle":33.56,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":2,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":113.31,"curve":[0.012,0.71,0.75,1]},{"time":0.4,"angle":129.98}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-22.48,"y":5.3}]},"torso":{"rotate":[{"time":0,"angle":-19.24,"curve":"stepped"},{"time":0.0333,"angle":-19.24,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"angle":-26.23,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-65.05}],"translate":[{"time":0,"x":0,"y":-98.38,"curve":[0.09,0.45,0.75,1]},{"time":0.0333,"x":0,"y":-126.55,"curve":[0.25,0,0.947,0.25]},{"time":0.0667,"x":0,"y":30.4,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":-37.1,"y":51.47}]},"waist":{"rotate":[{"time":0,"angle":-343.16,"curve":"stepped"},{"time":0.0667,"angle":-343.16,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"angle":-347.25}]},"Character_midpoint":{"rotate":[{"time":0.1,"angle":0,"curve":[0.385,0.14,0.701,0.48]},{"time":0.2333,"angle":181},{"time":0.4,"angle":1},{"time":0.5667,"angle":182},{"time":0.7333,"angle":2},{"time":0.9,"angle":183},{"time":1.0667,"angle":3}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.031,0.34,0.382,0.95]},{"time":0.1,"x":39.5,"y":101.57,"curve":[0.244,0.67,0.75,1]},{"time":0.4,"x":39.5,"y":324.9,"curve":[0.25,0,0.775,0.39]},{"time":1.0667,"x":0,"y":0}]}}},"meleeSwing1":{"slots":{"item_near":{"attachment":[{"time":0,"name":"sword_1"},{"time":0.1,"name":"sword_2_swing"},{"time":0.1333,"name":"sword_3_bigSwing"},{"time":0.2,"name":"sword_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-25.14,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-63.6,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-74.07,"curve":"stepped"},{"time":0.5,"angle":-74.07,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":-5.43,"y":-4.3,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":0.757,"y":1,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":1,"y":1}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-69.97,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-90.06,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-90.1,"curve":"stepped"},{"time":0.5,"angle":-90.1,"curve":[0.566,0,0.933,0.63]},{"time":0.6333,"angle":-24.23,"curve":[0.09,0.36,0.431,0.99]},{"time":0.7333,"angle":3,"curve":[0.541,0,0.379,0.99]},{"time":0.8333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1.082,"y":1,"curve":"stepped"},{"time":0.5,"x":1.082,"y":1,"curve":[0.566,0,0.933,0.63]},{"time":0.6333,"x":1,"y":1}]},"arm_upper_far":{"rotate":[{"time":0,"angle":91.5,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":114.92,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":41.9,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-9.38,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":340.68,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":0.43,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":0.87,"y":1,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":1,"y":1}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-168.41,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-169.59,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-230.97,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-275.16,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":-278.91,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"angle":32.3,"curve":[0.09,0.36,0.431,0.99]},{"time":0.7333,"angle":-2.69,"curve":[0.541,0,0.379,0.99]},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":-10.36,"y":-42.32,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":-13.86,"y":-50.69,"curve":"stepped"},{"time":0.5,"x":-13.86,"y":-50.69,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1.04,"y":1,"curve":"stepped"},{"time":0.5,"x":1.04,"y":1,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"x":1,"y":1}]},"hand_far":{"rotate":[{"time":0,"angle":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-15.49,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":0}]},"hand_near":{"rotate":[{"time":0,"angle":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":4.95,"curve":[0.446,0.31,0.796,0.66]},{"time":0.1333,"angle":-38.93,"curve":[0.534,0.34,0.878,0.67]},{"time":0.1667,"angle":-24.41,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-38.7,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":-45.86,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-16.3,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":-2.41}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":2.55,"y":1.96,"curve":[0.433,0.28,0.792,0.64]},{"time":0.1333,"x":-2.42,"y":6.35,"curve":[0.552,0.34,0.903,0.68]},{"time":0.1667,"x":1.23,"y":5.08,"curve":"stepped"},{"time":0.5,"x":1.23,"y":5.08,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":2.21,"y":4.11,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"x":0,"y":0}]}}},"meleeSwing2":{"slots":{"item_near":{"attachment":[{"time":0,"name":"sword_1"},{"time":0.0667,"name":"sword_2_swing"},{"time":0.0864,"name":"sword_3_bigSwing"},{"time":0.1667,"name":"sword_1"},{"time":0.3,"name":"sword_1"},{"time":0.3828,"name":"sword_2_swing"},{"time":0.4333,"name":"sword_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":34.16,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"angle":5.42,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-49.51},{"time":0.2,"angle":-25.66,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-25.14,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":4.98,"curve":[0.025,0.57,0.75,1]},{"time":0.4667,"angle":4.67},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":8.47,"y":-6.77,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"x":1.36,"y":-12.17,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0,"y":0}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-99.47,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"angle":-104.63,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-90.21},{"time":0.2,"angle":-73.34,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-69.97,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":-1.14,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":1.05,"curve":[0.433,0,0.447,0.98]},{"time":0.5,"angle":-6.26,"curve":[0.517,0,0.441,0.99]},{"time":0.6333,"angle":0}]},"arm_upper_far":{"rotate":[{"time":0,"angle":202.8,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"angle":297.95,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":50.7},{"time":0.2,"angle":87.9,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":91.5,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":13.79,"curve":[0.025,0.57,0.75,1]},{"time":0.4667,"angle":-1.82},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":15.8,"y":94.88,"curve":"stepped"},{"time":0.0667,"x":15.8,"y":94.88,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-291.33,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"angle":112.01,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":157.19},{"time":0.2,"angle":-173.02,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-168.41,"curve":[0.468,0,0.966,0.57]},{"time":0.3667,"angle":-258.21},{"time":0.4,"angle":9.66,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":-9.75,"curve":[0.433,0,0.447,0.98]},{"time":0.5,"angle":1.47,"curve":[0.517,0,0.441,0.99]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":-15.58,"y":-68.57,"curve":"stepped"},{"time":0.0667,"x":-15.58,"y":-68.57,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0,"y":0}]},"hand_near":{"rotate":[{"time":0,"angle":-31.28,"curve":[0.25,0,0.985,0.35]},{"time":0.0667,"angle":-41.1,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-20.74},{"time":0.2,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":-2.41}],"translate":[{"time":0,"x":2.61,"y":2.56,"curve":"stepped"},{"time":0.0667,"x":2.61,"y":2.56,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":1.87,"y":3.25},{"time":0.2,"x":0,"y":0}]}}},"meleeSwing1-fullBody":{"slots":{"item_near":{"attachment":[{"time":0,"name":"sword_1"},{"time":0.0864,"name":"sword_3_bigSwing"},{"time":0.1667,"name":"sword_1"},{"time":0.3,"name":"sword_1"},{"time":0.3828,"name":"sword_2_swing"},{"time":0.4333,"name":"sword_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_1"},{"time":0.0837,"name":"leg_lower_near_2"},{"time":0.4,"name":"leg_lower_near_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-80.19,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-94.78,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-49.51},{"time":0.2,"angle":-25.66,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-25.14,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":4.98,"curve":[0.025,0.57,0.75,1]},{"time":0.4667,"angle":4.67},{"time":0.5333,"angle":0}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-99.47,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-104.63,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-90.21},{"time":0.2,"angle":-73.34,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-69.97,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":-1.14,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":1.05,"curve":[0.433,0,0.447,0.98]},{"time":0.5,"angle":-6.26,"curve":[0.517,0,0.441,0.99]},{"time":0.6333,"angle":0}]},"arm_upper_far":{"rotate":[{"time":0,"angle":-104.93,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-87.08,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":50.7},{"time":0.2,"angle":87.9,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":91.5,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":13.79,"curve":[0.025,0.57,0.75,1]},{"time":0.4667,"angle":-1.82},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":15.8,"y":94.88,"curve":"stepped"},{"time":0.0667,"x":15.8,"y":94.88,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":95.17,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":112.01,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":157.19},{"time":0.2,"angle":-173.02,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-168.41,"curve":[0.468,0,0.966,0.57]},{"time":0.3667,"angle":-258.21},{"time":0.4,"angle":9.66,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":-9.75,"curve":[0.433,0,0.447,0.98]},{"time":0.5,"angle":1.47,"curve":[0.517,0,0.441,0.99]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":-15.58,"y":-68.57,"curve":"stepped"},{"time":0.0667,"x":-15.58,"y":-68.57,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":-36.71,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-23.4,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-49.78,"curve":"stepped"},{"time":0.3,"angle":-49.78,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":7.38,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":8.29,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":-7.83,"y":13.01,"curve":"stepped"},{"time":0.3,"x":-7.83,"y":13.01,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":46.73,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":31.74,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-69.72,"curve":"stepped"},{"time":0.3,"angle":-69.72,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":15.03,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":18.09,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":-0.87,"y":13.48,"curve":"stepped"},{"time":0.3,"x":-0.87,"y":13.48,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":0,"y":0}]},"hand_near":{"rotate":[{"time":0,"angle":-14.88,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-21.66,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-20.74},{"time":0.2,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":-2.41}],"translate":[{"time":0,"x":2.61,"y":2.56,"curve":"stepped"},{"time":0.0667,"x":2.61,"y":2.56,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":1.87,"y":3.25},{"time":0.2,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":28.63,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":14.9,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":0.76},{"time":0.2,"angle":17.28,"curve":"stepped"},{"time":0.3,"angle":17.28,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":3.79,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":0,"curve":[0.433,0,0.447,0.98]},{"time":0.4667,"angle":-1.81},{"time":0.5333,"angle":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-15.66,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-17.77,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":26.53,"curve":"stepped"},{"time":0.3,"angle":26.53,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":-19.23,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":-24.19,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-75.25,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-51.3,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-8.01,"curve":"stepped"},{"time":0.3,"angle":-8.01,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":-38.74,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":-43.6,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":6.17,"y":12.17,"curve":"stepped"},{"time":0.0667,"x":6.17,"y":12.17,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":11.05,"y":1.61,"curve":"stepped"},{"time":0.3,"x":11.05,"y":1.61,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":2.87,"y":2.16,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"x":2.97,"y":2.02,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"x":0,"y":0}]},"leg_upper_far":{"rotate":[{"time":0,"angle":62.84,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":57.54,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-29.78},{"time":0.2,"angle":-40,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-41.05,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":12.73,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":16.4,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":4.63,"y":-12.71,"curve":"stepped"},{"time":0.3,"x":4.63,"y":-12.71,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":0,"y":0}],"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":1.06,"y":1,"curve":"stepped"},{"time":0.3,"x":1.06,"y":1,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":1,"y":1}]},"leg_upper_near":{"rotate":[{"time":0,"angle":38.51,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":36,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-6.75,"curve":"stepped"},{"time":0.2,"angle":-6.75,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"angle":-5.7,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":23.97,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":26.62,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":7.46,"y":2.53,"curve":"stepped"},{"time":0.3,"x":7.46,"y":2.53,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":0,"y":0}],"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":0.991,"y":1,"curve":"stepped"},{"time":0.3,"x":0.991,"y":1,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":0,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":1.76,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":0}]},"torso":{"rotate":[{"time":0,"angle":-32.46,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"angle":-39.21,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":14.55},{"time":0.2,"angle":19.6,"curve":"stepped"},{"time":0.3,"angle":19.6,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":-0.94,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"angle":-1.25,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":27.53,"y":-103.2,"curve":[0.576,0,0.963,0.63]},{"time":0.0667,"x":27.53,"y":-66.53,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"x":38.48,"y":101.18},{"time":0.2,"x":34.48,"y":134.44,"curve":[0.174,0.39,0.75,1]},{"time":0.3,"x":34.48,"y":136.18,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"x":0,"y":-18.81,"curve":[0.025,0.57,0.75,1]},{"time":0.4333,"x":0,"y":-25.09,"curve":[0.433,0,0.447,0.98]},{"time":0.5333,"x":0,"y":0}]},"waist":{"rotate":[{"time":0,"angle":22.15,"curve":"stepped"},{"time":0.0667,"angle":22.15,"curve":[0.071,0.53,0.478,0.97]},{"time":0.1333,"angle":-2.23},{"time":0.2,"angle":-7.06,"curve":"stepped"},{"time":0.3,"angle":-7.06,"curve":[0.468,0,0.966,0.57]},{"time":0.4,"angle":0}]}}},"meleeSwing2-fullBody":{"slots":{"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.1667,"name":"foot_near_2_bent"},{"time":0.5,"name":"foot_near_2_bent"},{"time":0.6,"name":"foot_near_1"}]},"item_near":{"attachment":[{"time":0,"name":"sword_1"},{"time":0.1,"name":"sword_2_swing"},{"time":0.1333,"name":"sword_3_bigSwing"},{"time":0.2,"name":"sword_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"},{"time":0.5,"name":"leg_lower_near_2"},{"time":0.6333,"name":"leg_lower_near_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-25.14,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-63.6,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-74.07,"curve":"stepped"},{"time":0.5,"angle":-74.07,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":-5.43,"y":-4.3,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":0.757,"y":1,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":1,"y":1}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-69.97,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-90.06,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-90.1,"curve":"stepped"},{"time":0.5,"angle":-90.1,"curve":[0.566,0,0.933,0.63]},{"time":0.6333,"angle":-24.23,"curve":[0.09,0.36,0.431,0.99]},{"time":0.7333,"angle":3,"curve":[0.541,0,0.379,0.99]},{"time":0.8333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1.082,"y":1,"curve":"stepped"},{"time":0.5,"x":1.082,"y":1,"curve":[0.566,0,0.933,0.63]},{"time":0.6333,"x":1,"y":1}]},"arm_upper_far":{"rotate":[{"time":0,"angle":91.5,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":114.92,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":41.9,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":33.22,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":31.1,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":0.43,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":0.87,"y":1,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":1,"y":1}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-168.41,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-169.59,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":-230.97,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-241.64,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":-243.33,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"angle":32.3,"curve":[0.09,0.36,0.431,0.99]},{"time":0.7333,"angle":-2.69,"curve":[0.541,0,0.379,0.99]},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":-10.36,"y":-42.32,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"x":-13.86,"y":-50.69,"curve":"stepped"},{"time":0.5,"x":-13.86,"y":-50.69,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1.04,"y":1,"curve":"stepped"},{"time":0.5,"x":1.04,"y":1,"curve":[0.566,0,0.777,0.68]},{"time":0.6333,"x":1,"y":1}]},"foot_far":{"rotate":[{"time":0,"angle":-49.78,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":1.77,"curve":[0.561,0.31,0.944,0.67]},{"time":0.1667,"angle":10.6,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":9.35,"curve":"stepped"},{"time":0.5,"angle":9.35,"curve":[0.544,0,0.778,0.49]},{"time":0.5667,"angle":11.8,"curve":[0.24,0.49,0.466,0.99]},{"time":0.6333,"angle":-4.59,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":-7.83,"y":13.01,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":-69.72,"curve":[0.656,0,0.908,0.29]},{"time":0.1333,"angle":-13.2,"curve":[0.536,0.28,0.839,0.62]},{"time":0.1667,"angle":70.19,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":65.58,"curve":"stepped"},{"time":0.5,"angle":65.58,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-8.9,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":-0.87,"y":13.48,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":20.69,"y":35.28,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"x":26.02,"y":31.86,"curve":"stepped"},{"time":0.5,"x":26.02,"y":31.86,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":0,"y":0}]},"hand_far":{"rotate":[{"time":0,"angle":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-15.49,"curve":[0.562,0.31,0.941,0.68]},{"time":0.1667,"angle":0}]},"hand_near":{"rotate":[{"time":0,"angle":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":4.95,"curve":[0.446,0.31,0.796,0.66]},{"time":0.1333,"angle":-38.93,"curve":[0.534,0.34,0.878,0.67]},{"time":0.1667,"angle":-35.03,"curve":"stepped"},{"time":0.5,"angle":-35.03,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-16.3,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":-2.41}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":2.55,"y":1.96,"curve":[0.433,0.28,0.792,0.64]},{"time":0.1333,"x":-2.42,"y":6.35,"curve":[0.552,0.34,0.903,0.68]},{"time":0.1667,"x":1.23,"y":5.08,"curve":"stepped"},{"time":0.5,"x":1.23,"y":5.08,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":2.21,"y":4.11,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":17.28,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":12.01,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":9.39,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":3.87,"curve":[0.217,0.31,0.75,1]},{"time":0.5,"angle":-1.35,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-3.82,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":26.53,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-17.9,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":-82.79,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-86.35,"curve":"stepped"},{"time":0.5,"angle":-86.35,"curve":[0.544,0,0.778,0.49]},{"time":0.5667,"angle":-53.35,"curve":[0.24,0.49,0.466,0.99]},{"time":0.6333,"angle":10.98,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-8.01,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-16.52,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":-76.14,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-49.16,"curve":"stepped"},{"time":0.5,"angle":-49.16,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-11.73,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":11.05,"y":1.61,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":0,"y":0}]},"leg_upper_far":{"rotate":[{"time":0,"angle":-41.05,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-18.15,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":80.18,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":84.63,"curve":"stepped"},{"time":0.5,"angle":84.63,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-6.81,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":4.63,"y":-12.71,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1.06,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1,"y":1}]},"leg_upper_near":{"rotate":[{"time":0,"angle":-5.7,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-9.85,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":10.59,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-12.41,"curve":"stepped"},{"time":0.5,"angle":-12.41,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":1.93,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":7.46,"y":2.53,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":0,"y":0}],"scale":[{"time":0,"x":0.991,"y":1,"curve":[0.787,0,0.967,0.28]},{"time":0.1667,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-12.76,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":-13.46,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-30.6,"curve":"stepped"},{"time":0.5,"angle":-30.6,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":0}],"translate":[{"time":0.1667,"x":0,"y":0,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"x":-7.4,"y":-6.12,"curve":"stepped"},{"time":0.5,"x":-7.4,"y":-6.12,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":0,"y":0}]},"torso":{"rotate":[{"time":0,"angle":19.6,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":1.85,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":-27.39,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-28.28,"curve":"stepped"},{"time":0.5,"angle":-28.28,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":-0.88,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":34.48,"y":136.18,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":34.48,"y":127.9,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"x":-12.22,"y":-130.55,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"x":-12.22,"y":-137.22,"curve":"stepped"},{"time":0.5,"x":-12.22,"y":-137.22,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":0,"y":8.9,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"x":0,"y":0}]},"waist":{"rotate":[{"time":0,"angle":-7.06,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"angle":-343.21,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"angle":-339.75,"curve":[0.052,0.7,0.75,1]},{"time":0.2333,"angle":-338.9,"curve":"stepped"},{"time":0.5,"angle":-338.9,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"angle":1.08,"curve":[0.582,0,0.431,0.99]},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.787,0,0.967,0.28]},{"time":0.0667,"x":4.54,"y":-5.76,"curve":[0.547,0.27,0.954,0.66]},{"time":0.1667,"x":0.58,"y":-1.08,"curve":"stepped"},{"time":0.5,"x":0.58,"y":-1.08,"curve":[0.566,0,0.487,0.99]},{"time":0.6333,"x":0,"y":0}]}}},"punch1":{"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":8.24,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":22.93,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-97.55,"curve":"stepped"},{"time":0.2667,"angle":-97.55,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":12.43,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}]},"arm_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":5.68,"curve":"stepped"},{"time":0.0667,"angle":5.68,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-8.53,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-28.19},{"time":0.2,"angle":-47.53,"curve":"stepped"},{"time":0.2667,"angle":-47.53,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":9.22,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}]},"arm_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":-4.32,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-10.71,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":79.48,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":83.85},{"time":0.2,"angle":85.5,"curve":"stepped"},{"time":0.2667,"angle":85.5,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":-6.68,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0.0333,"x":0,"y":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":0,"y":11.31,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":5.93,"y":-13.02,"curve":[0.009,0.54,0.75,1]},{"time":0.2,"x":6.56,"y":-17.2,"curve":"stepped"},{"time":0.2667,"x":6.56,"y":-17.2,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":-285.24,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-274.62,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-10.93,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-13.81},{"time":0.2,"angle":-16.06,"curve":"stepped"},{"time":0.2667,"angle":-16.06,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":-7.22,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"x":-9.05,"y":-24.9,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":-11.31,"y":-36.22,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":-2.26,"y":-2.26,"curve":"stepped"},{"time":0.2667,"x":-2.26,"y":-2.26,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":-5.67,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-4.21,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":8.98,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":11.76,"curve":"stepped"},{"time":0.2667,"angle":11.76,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":4.94,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":4.2,"y":0.99,"curve":"stepped"},{"time":0.2667,"x":4.2,"y":0.99,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":3.34,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":4.62,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-14.64,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-27.46,"curve":"stepped"},{"time":0.2667,"angle":-27.46,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":3.5,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":-1.18,"y":10.05,"curve":"stepped"},{"time":0.2667,"x":-1.18,"y":10.05,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]},"hand_far":{"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":1.264,"y":1.264,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"x":1.336,"y":1.336,"curve":[0.25,0,0.968,0.38]},{"time":0.2667,"x":1,"y":1}]},"head":{"rotate":[{"time":0.0333,"angle":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-6.64,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":2.66,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":11.22,"curve":"stepped"},{"time":0.2667,"angle":11.22,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":0}],"translate":[{"time":0.0333,"x":0,"y":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":-6.79,"y":0,"curve":"stepped"},{"time":0.2667,"x":-6.79,"y":0,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":-6.04,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-15.25,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-4.23,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":0.73,"curve":"stepped"},{"time":0.2667,"angle":0.73,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":-15.24,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":-30.19,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-40.76,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-5.92,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":1.29,"curve":"stepped"},{"time":0.2667,"angle":1.29,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":-8.24,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0.0333,"x":0,"y":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":0.68,"y":3.21,"curve":"stepped"},{"time":0.2667,"x":0.68,"y":3.21,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"x":0.926,"y":1,"curve":"stepped"},{"time":0.0667,"x":0.926,"y":1,"curve":[0.25,0,0.997,0.01]},{"time":0.3333,"x":0.968,"y":1,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"x":1,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":12.32,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":23.51,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":0.6,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-4.81,"curve":"stepped"},{"time":0.2667,"angle":-4.81,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":9.25,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"angle":25.98,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":35.54,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-0.86,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-5.21,"curve":"stepped"},{"time":0.2667,"angle":-5.21,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":4.26,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"x":0.954,"y":1,"curve":"stepped"},{"time":0.0667,"x":0.954,"y":1,"curve":[0.25,0,0.997,0.01]},{"time":0.3333,"x":0.934,"y":1,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"x":1,"y":1}]},"torso":{"rotate":[{"time":0.0333,"angle":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"angle":-3.09,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"angle":-6.07,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"angle":-8.5,"curve":"stepped"},{"time":0.2667,"angle":-8.5,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.912,0.55]},{"time":0.0333,"x":-31.69,"y":-15.84,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":-36.22,"y":-33.95,"curve":[0.25,0,0.997,0.01]},{"time":0.1,"x":36.22,"y":0,"curve":[0.009,0.54,0.75,1]},{"time":0.1333,"x":56.59,"y":6.79,"curve":"stepped"},{"time":0.2667,"x":56.59,"y":6.79,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":-13.58,"curve":[0.406,0,0.52,0.99]},{"time":0.4333,"x":0,"y":0}]},"waist":{"translate":[{"time":0.0333,"x":0,"y":0,"curve":[0.039,0.52,0.685,0.99]},{"time":0.0667,"x":6.79,"y":0,"curve":"stepped"},{"time":0.2667,"x":6.79,"y":0,"curve":[0.704,0,0.677,0.99]},{"time":0.3333,"x":0,"y":0}]}}},"punch2":{"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":16.5,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":0,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-23.65,"curve":"stepped"},{"time":0.2667,"angle":-23.65,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":0}]},"arm_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":21.46,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-91.42,"curve":"stepped"},{"time":0.2667,"angle":-91.42,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":0}]},"arm_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":13.34,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":278.76,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":267.71,"curve":"stepped"},{"time":0.2667,"angle":267.71,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":2.96,"y":-23.41,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":7.37,"y":77.38,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"x":6.35,"y":83.61,"curve":"stepped"},{"time":0.2667,"x":6.35,"y":83.61,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":-17.75,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-206.68,"curve":"stepped"},{"time":0.2667,"angle":-206.68,"curve":[0.501,0,0.95,0.59]},{"time":0.3333,"angle":51.24,"curve":[0.068,0.28,0.514,0.96]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":-1.38,"y":10.96,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":-0.04,"y":-64.64,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"x":0.96,"y":-70.86,"curve":"stepped"},{"time":0.2667,"x":0.96,"y":-70.86,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":0.874,"y":1,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":1,"y":1}]},"foot_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":0.76,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":15.74,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":23.21,"curve":"stepped"},{"time":0.2667,"angle":23.21,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":6.59,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":-0.07,"y":1.76,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":3.94,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-23.29,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-37.55,"curve":"stepped"},{"time":0.2667,"angle":-37.55,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":7.96,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":3.67,"y":3.77,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":0,"y":0}]},"hand_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":7.1,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":0}]},"hand_near":{"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":3.68,"y":0.06,"curve":"stepped"},{"time":0.2667,"x":3.68,"y":0.06,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0,"y":0}],"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.44,0.01,0.984,0.4]},{"time":0.1,"x":1.157,"y":1.157,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"x":1.23,"y":1.23,"curve":[0.25,0,1,0.42]},{"time":0.2667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":3.38,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":9.47,"curve":"stepped"},{"time":0.2667,"angle":9.47,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":-15.47,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-17.28,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-19,"curve":"stepped"},{"time":0.2667,"angle":-19,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":-16.66,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":-32.61,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-6.09,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":-14.78,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":0.921,"y":1,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0.971,"y":1,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"x":1,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":14.21,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":11.72,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":5.75,"curve":"stepped"},{"time":0.2667,"angle":5.75,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":10.85,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":-0.88,"y":14.24,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":7.37,"y":-32.33,"curve":"stepped"},{"time":0.2667,"x":7.37,"y":-32.33,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0,"y":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":28.64,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-14.55,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-18.02,"curve":"stepped"},{"time":0.2667,"angle":-18.02,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":8.63,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":0.55,"y":-8.9,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":-5.73,"y":25.15,"curve":"stepped"},{"time":0.2667,"x":-5.73,"y":25.15,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":0.886,"y":1,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":0.981,"y":1,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":-7.21,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":-9.22,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-7.56,"curve":"stepped"},{"time":0.2667,"angle":-7.56,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":-1.74,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":-32.11,"y":-21.4,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":66.33,"y":-11.05,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"x":95.76,"y":-11.05,"curve":"stepped"},{"time":0.2667,"x":95.76,"y":-11.05,"curve":[0.79,0,0.75,1]},{"time":0.3333,"x":5.52,"y":-15.31,"curve":[0.568,0,0.471,0.99]},{"time":0.4333,"x":0,"y":0}]},"waist":{"rotate":[{"time":0,"angle":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"angle":7.25,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"angle":0,"curve":[0.041,0.64,0.75,1]},{"time":0.1667,"angle":-2.79,"curve":"stepped"},{"time":0.2667,"angle":-2.79,"curve":[0.79,0,0.75,1]},{"time":0.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.595,0,0.474,0.99]},{"time":0.0667,"x":1.76,"y":0.22,"curve":[0.25,0,0.979,0.36]},{"time":0.1,"x":0,"y":0}]}}},"roll":{"slots":{"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.1,"name":"foot_near_2_bent"},{"time":0.1333,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_1"},{"time":0.0333,"name":"leg_lower_near_2"},{"time":0.4333,"name":"leg_lower_near_1"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":22.66,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":-62.41,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":17.7,"curve":"stepped"},{"time":0.3667,"angle":17.7,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"angle":18.39}]},"arm_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":17.45,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":-58.97,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-12.18,"curve":[0.344,0.37,0.679,0.71]},{"time":0.2667,"angle":26.83,"curve":"stepped"},{"time":0.3667,"angle":26.83,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"angle":16.8}]},"arm_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":19.93,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":106.82,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":28.18,"curve":"stepped"},{"time":0.3667,"angle":28.18,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"angle":0}],"translate":[{"time":0.1333,"x":0,"y":0,"curve":[0.528,0.27,0.892,0.63]},{"time":0.2,"x":-1.46,"y":8.93,"curve":"stepped"},{"time":0.3667,"x":-1.46,"y":8.93,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":-26.81,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":-294.32,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":177.69,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-231.94,"curve":[0.346,0.38,0.68,0.72]},{"time":0.2667,"angle":97.68,"curve":[0.359,0.48,0.695,0.81]},{"time":0.3667,"angle":-278.34,"curve":[0.353,0.66,0.687,1]},{"time":0.4333,"angle":26.88}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"x":-14.12,"y":-23.86,"curve":"stepped"},{"time":0.3667,"x":-14.12,"y":-23.86,"curve":[0.379,0.64,0.719,1]},{"time":0.4333,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":22.57,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":32.41,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":-50.44,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-40.26,"curve":[0.339,0.35,0.673,0.69]},{"time":0.2667,"angle":-22.69,"curve":[0.346,0.38,0.681,0.72]},{"time":0.3667,"angle":10.5,"curve":[0.335,0.34,0.668,0.67]},{"time":0.4333,"angle":-0.53}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":-5.94,"y":7.58,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"x":0.51,"y":18.64,"curve":"stepped"},{"time":0.3667,"x":0.51,"y":18.64,"curve":[0.379,0.64,0.719,1]},{"time":0.4333,"x":0,"y":0}]},"foot_near":{"rotate":[{"time":0,"angle":0,"curve":[0.663,0,0.838,0.49]},{"time":0.0333,"angle":33.31,"curve":[0.176,0.49,0.336,0.99]},{"time":0.0667,"angle":60.5,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":53.75,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":-70.36,"curve":"stepped"},{"time":0.2,"angle":-70.36,"curve":[0.352,0.42,0.696,0.77]},{"time":0.2667,"angle":-45.33,"curve":[0.395,0.62,0.755,1]},{"time":0.3667,"angle":-31.52,"curve":[0.354,0.43,0.689,0.77]},{"time":0.4,"angle":-6.2,"curve":[0.364,0.65,0.699,1]},{"time":0.4333,"angle":15.49}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":14.35,"y":28.32,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"x":10.25,"y":24.18,"curve":"stepped"},{"time":0.2,"x":10.25,"y":24.18,"curve":[0.352,0.42,0.696,0.77]},{"time":0.2667,"x":3.03,"y":21.78,"curve":"stepped"},{"time":0.3667,"x":3.03,"y":21.78,"curve":[0.395,0.62,0.755,1]},{"time":0.4333,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":4.29,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":-5.19,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-30.64,"curve":"stepped"},{"time":0.2667,"angle":-30.64,"curve":[0.351,0.48,0.686,0.82]},{"time":0.3667,"angle":19.06,"curve":[0.345,0.66,0.679,1]},{"time":0.4333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":-21.3,"y":0.27,"curve":"stepped"},{"time":0.1333,"x":-21.3,"y":0.27,"curve":[0.528,0.27,0.892,0.63]},{"time":0.2,"x":-32.69,"y":-20.64,"curve":"stepped"},{"time":0.3667,"x":-32.69,"y":-20.64,"curve":[0.36,0.65,0.695,1]},{"time":0.4333,"x":0,"y":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":-72.82,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":-67.11,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":32.92,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-12.3,"curve":[0.362,0.45,0.703,0.79]},{"time":0.2667,"angle":-53.57,"curve":[0.383,0.64,0.723,1]},{"time":0.3667,"angle":-45.41,"curve":[0.35,0.66,0.684,1]},{"time":0.4333,"angle":-52.55}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":-9.08,"y":-2.89,"curve":"stepped"},{"time":0.3667,"x":-9.08,"y":-2.89,"curve":[0.477,0.32,0.817,0.66]},{"time":0.4333,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":0,"curve":[0.663,0,0.838,0.49]},{"time":0.0333,"angle":-56.75,"curve":[0.176,0.49,0.336,0.99]},{"time":0.0667,"angle":-91.58,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":-73.5,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":-4.92,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-99.44,"curve":[0.388,0.64,0.731,1]},{"time":0.2667,"angle":-117.1,"curve":[0.355,0.42,0.694,0.76]},{"time":0.3667,"angle":-139.9,"curve":[0.34,0.35,0.673,0.69]},{"time":0.4,"angle":-94.93,"curve":[0.341,0.36,0.675,0.7]},{"time":0.4333,"angle":-55.15}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":11.93,"y":12.99,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"x":5.94,"y":4.55,"curve":"stepped"},{"time":0.2,"x":5.94,"y":4.55,"curve":[0.352,0.42,0.696,0.77]},{"time":0.2667,"x":12.99,"y":7.86,"curve":[0.25,0,0.75,1]},{"time":0.3667,"x":23.29,"y":1.13,"curve":[0.25,0,0.625,0.5]},{"time":0.4,"x":12.57,"y":12.78,"curve":[0.375,0.5,0.75,1]},{"time":0.4333,"x":-2.19,"y":7.36}],"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.48,0,0.876,0.47]},{"time":0.4,"x":0.824,"y":1,"curve":[0.43,0.33,0.765,0.66]},{"time":0.4333,"x":0.855,"y":1}]},"leg_upper_far":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":51.75,"curve":[0.386,0,0.734,0.39]},{"time":0.1,"angle":41.32,"curve":[0.528,0.27,0.892,0.63]},{"time":0.1333,"angle":-48.27,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":-10.64,"curve":"stepped"},{"time":0.2667,"angle":-10.64,"curve":[0.356,0.55,0.69,0.89]},{"time":0.3667,"angle":28.12,"curve":[0.336,0.66,0.67,1]},{"time":0.4333,"angle":62.83}]},"leg_upper_near":{"rotate":[{"time":0,"angle":0,"curve":[0.663,0,0.838,0.49]},{"time":0.0333,"angle":23.97,"curve":[0.176,0.49,0.336,0.99]},{"time":0.0667,"angle":31.21,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":-3.09,"curve":[0.32,0.39,0.675,0.74]},{"time":0.2,"angle":109.37,"curve":[0.383,0.64,0.723,1]},{"time":0.2667,"angle":128.43,"curve":"stepped"},{"time":0.3667,"angle":128.43,"curve":[0.354,0.43,0.689,0.77]},{"time":0.4,"angle":89.91},{"time":0.4333,"angle":50.85}],"translate":[{"time":0.2,"x":0,"y":0,"curve":[0.514,0.3,0.864,0.65]},{"time":0.2667,"x":-16.36,"y":-3.42,"curve":"stepped"},{"time":0.3667,"x":-16.36,"y":-3.42,"curve":[0.395,0.62,0.755,1]},{"time":0.4333,"x":-5.6,"y":0.42}],"scale":[{"time":0.0667,"x":1,"y":1,"curve":[0.514,0,0.928,0.49]},{"time":0.4333,"x":0.732,"y":1}]},"neck":{"rotate":[{"time":0.1333,"angle":0,"curve":[0.528,0.27,0.892,0.63]},{"time":0.2,"angle":-32.46,"curve":"stepped"},{"time":0.3667,"angle":-32.46,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"angle":0}],"translate":[{"time":0.1333,"x":0,"y":0,"curve":[0.528,0.27,0.892,0.63]},{"time":0.2,"x":-7.79,"y":-2.3,"curve":"stepped"},{"time":0.3667,"x":-7.79,"y":-2.3,"curve":[0.367,0.65,0.703,1]},{"time":0.4333,"x":0,"y":0}]},"torso":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":-19.24,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":-88.84},{"time":0.2,"angle":-137.52},{"time":0.2667,"angle":154.95,"curve":[0.355,0.42,0.694,0.76]},{"time":0.3667,"angle":32.84,"curve":[0.188,0.67,0.59,0.91]},{"time":0.4333,"angle":-10.53}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"x":12.42,"y":-98.38},{"time":0.1,"x":-60.02,"y":-81.29},{"time":0.1333,"x":24.17,"y":2.05},{"time":0.1667,"x":34.89,"y":2.05},{"time":0.2,"x":137.92,"y":2.05},{"time":0.2333,"x":196.88,"y":-20.7},{"time":0.2667,"x":211.88,"y":-96.22,"curve":[0.347,0.39,0.681,0.72]},{"time":0.3,"x":188.45,"y":-190.7},{"time":0.3333,"x":109.41,"y":-231.83},{"time":0.3667,"x":-6.99,"y":-198.23,"curve":[0.188,0.67,0.59,0.91]},{"time":0.4333,"x":-39.09,"y":-81.74}]},"waist":{"rotate":[{"time":0,"angle":0,"curve":[0.693,0,0.366,0.99]},{"time":0.0667,"angle":-343.16,"curve":[0.514,0,0.928,0.49]},{"time":0.1333,"angle":51.74,"curve":[0.294,0.35,0.638,0.69]},{"time":0.2,"angle":38.59,"curve":"stepped"},{"time":0.3667,"angle":38.59,"curve":[0.384,0.64,0.725,1]},{"time":0.4333,"angle":0}]}}},"run":{"slots":{"foot_far":{"attachment":[{"time":0,"name":"foot_far_1"},{"time":0.1667,"name":"foot_far_2_bent"},{"time":0.2333,"name":"foot_far_1"}]},"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.4333,"name":"foot_near_2_bent"},{"time":0.5,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-11.04,"curve":"stepped"},{"time":0.0667,"angle":-11.04},{"time":0.1333,"angle":-9.83},{"time":0.2,"angle":2.46,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-2.79,"curve":"stepped"},{"time":0.3333,"angle":-2.79},{"time":0.4,"angle":-7.41,"curve":"stepped"},{"time":0.4667,"angle":-7.41},{"time":0.5333,"angle":-11.04}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-14.54,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":-1.98},{"time":0.1333,"angle":3.35},{"time":0.2667,"angle":3.7,"curve":[0.25,0,0.939,0.69]},{"time":0.4,"angle":-3.06},{"time":0.4667,"angle":3.35},{"time":0.5333,"angle":-14.54}]},"arm_upper_far":{"rotate":[{"time":0,"angle":252.31,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":-111.63},{"time":0.1333,"angle":-84.06},{"time":0.2,"angle":-17.57,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":24.85,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":32.78},{"time":0.4,"angle":-66.34,"curve":"stepped"},{"time":0.4667,"angle":-66.34},{"time":0.5333,"angle":252.31}],"translate":[{"time":0,"x":18.8,"y":73.96,"curve":"stepped"},{"time":0.1333,"x":18.8,"y":73.96},{"time":0.2,"x":11.35,"y":30.99,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-1.72,"y":8.96,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"x":-5.93,"y":8.31},{"time":0.4,"x":18.8,"y":73.96}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-251.5,"curve":[0.031,0.26,0.476,0.96]},{"time":0.0667,"angle":114.43,"curve":[0.713,0,0.556,0.66]},{"time":0.2667,"angle":-36.89,"curve":[0.211,0.59,0.519,0.99]},{"time":0.3333,"angle":-40.57,"curve":[0.633,0,0.466,0.95]},{"time":0.5333,"angle":-251.5}],"translate":[{"time":0,"x":-18.86,"y":-33.5,"curve":"stepped"},{"time":0.1333,"x":-18.86,"y":-33.5},{"time":0.2,"x":-22.05,"y":-24.22,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-15.25,"y":-29.95,"curve":"stepped"},{"time":0.3333,"x":-15.25,"y":-29.95},{"time":0.4,"x":-22.63,"y":-28.57,"curve":"stepped"},{"time":0.4667,"x":-22.63,"y":-28.57},{"time":0.5333,"x":-18.86,"y":-33.5}]},"foot_far":{"rotate":[{"time":0,"angle":16.53,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":23.47},{"time":0.1,"angle":6.52},{"time":0.1333,"angle":47.6},{"time":0.2,"angle":49.64,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-0.58,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":0.62},{"time":0.4,"angle":-5.23},{"time":0.4667,"angle":-23.4},{"time":0.5333,"angle":16.53}],"translate":[{"time":0,"x":-1.14,"y":9.6,"curve":"stepped"},{"time":0.1333,"x":-1.14,"y":9.6},{"time":0.2,"x":28.82,"y":18.02,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-1.14,"y":9.6}]},"foot_near":{"rotate":[{"time":0,"angle":-29.9,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":-27.78},{"time":0.1333,"angle":-45.16},{"time":0.2,"angle":-23.79,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-0.17,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":5.34},{"time":0.3667,"angle":-14.92},{"time":0.4,"angle":12.5},{"time":0.4667,"angle":16.38},{"time":0.5333,"angle":-29.9}],"translate":[{"time":0,"x":1.98,"y":9.17,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"x":-4.49,"y":11.21},{"time":0.1333,"x":-1.76,"y":14.83},{"time":0.2,"x":0,"y":0,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":0.84,"y":5.59,"curve":"stepped"},{"time":0.3333,"x":0.84,"y":5.59},{"time":0.4,"x":0,"y":0},{"time":0.4667,"x":26.66,"y":5.54},{"time":0.5333,"x":1.98,"y":9.17}]},"hand_far":{"rotate":[{"time":0.1333,"angle":0},{"time":0.2,"angle":6.24,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":15.1,"curve":"stepped"},{"time":0.3333,"angle":15.1},{"time":0.4,"angle":0}],"translate":[{"time":0.2,"x":0,"y":0,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-0.08,"y":-5.06,"curve":"stepped"},{"time":0.3333,"x":-0.08,"y":-5.06},{"time":0.4,"x":0,"y":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":28.1,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":40.17},{"time":0.1,"angle":-26.21},{"time":0.1333,"angle":-51.79},{"time":0.2,"angle":15.68,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-48.88,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":-52.02},{"time":0.4,"angle":-70.86},{"time":0.4667,"angle":-64.11},{"time":0.5333,"angle":28.1}],"translate":[{"time":0.3333,"x":0,"y":0},{"time":0.4,"x":-11.23,"y":-4.44},{"time":0.4667,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-81.02,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":-96.35},{"time":0.1333,"angle":-107.06},{"time":0.2,"angle":-104.81,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":2.56,"curve":[0.25,0,0.982,0.6]},{"time":0.3333,"angle":7.37},{"time":0.3667,"angle":-50.8},{"time":0.4,"angle":-76.59},{"time":0.4667,"angle":-4.79},{"time":0.5333,"angle":-81.02}],"translate":[{"time":0,"x":7.36,"y":12.11,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"x":13.12,"y":10.68},{"time":0.1333,"x":15.67,"y":8.1},{"time":0.2,"x":13.54,"y":8.03,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4,"x":8.23,"y":8.19},{"time":0.4667,"x":0,"y":0},{"time":0.5333,"x":7.36,"y":12.11}]},"leg_upper_far":{"rotate":[{"time":0,"angle":33.66,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":27.01},{"time":0.1,"angle":38.08},{"time":0.1333,"angle":19.09},{"time":0.2,"angle":-52.46,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-67.57,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":-61.47},{"time":0.4,"angle":-25.85},{"time":0.4667,"angle":-7.76},{"time":0.5333,"angle":33.66}],"translate":[{"time":0.1333,"x":0,"y":0},{"time":0.2,"x":3.74,"y":-36.04,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-5.44,"y":-56.94,"curve":"stepped"},{"time":0.3333,"x":-5.44,"y":-56.94},{"time":0.4,"x":-8.22,"y":-52.57},{"time":0.4667,"x":-0.6,"y":-27.64},{"time":0.5333,"x":0,"y":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":-2.28,"curve":[0.506,0,0.368,1]},{"time":0.2667,"angle":81.89,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"angle":75.43},{"time":0.3667,"angle":84.6},{"time":0.4,"angle":79.77},{"time":0.4667,"angle":4.53},{"time":0.5333,"angle":-2.28}],"translate":[{"time":0.0667,"x":0,"y":0},{"time":0.1333,"x":-2.09,"y":8.88},{"time":0.2,"x":-1.4,"y":20,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-8.91,"y":37.86,"curve":"stepped"},{"time":0.3333,"x":-8.91,"y":37.86},{"time":0.4,"x":-1.67,"y":17.49,"curve":"stepped"},{"time":0.4667,"x":-1.67,"y":17.49},{"time":0.5333,"x":0,"y":0}]},"neck":{"rotate":[{"time":0.0667,"angle":0},{"time":0.1333,"angle":3.12,"curve":"stepped"},{"time":0.2,"angle":3.12,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.4,"angle":3.12,"curve":"stepped"},{"time":0.4667,"angle":3.12},{"time":0.5333,"angle":0}]},"torso":{"rotate":[{"time":0,"angle":-17.99,"curve":"stepped"},{"time":0.0667,"angle":-17.99},{"time":0.1333,"angle":-26.07,"curve":"stepped"},{"time":0.2,"angle":-26.07,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":-16.76,"curve":"stepped"},{"time":0.3333,"angle":-16.76},{"time":0.4,"angle":-26.07,"curve":"stepped"},{"time":0.4667,"angle":-26.07},{"time":0.5333,"angle":-17.99}],"translate":[{"time":0,"x":0,"y":47.44,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"x":0,"y":8.63},{"time":0.1333,"x":0,"y":-46.07},{"time":0.2,"x":0,"y":-34.75,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":0,"y":53.68,"curve":[0.25,0,0.939,0.69]},{"time":0.3333,"x":0,"y":1.92},{"time":0.4,"x":0,"y":-46.07},{"time":0.4667,"x":0,"y":-15.62},{"time":0.5333,"x":0,"y":47.44}]},"waist":{"rotate":[{"time":0.0667,"angle":0},{"time":0.1333,"angle":9.28,"curve":"stepped"},{"time":0.2,"angle":9.28,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.4,"angle":9.28,"curve":"stepped"},{"time":0.4667,"angle":9.28},{"time":0.5333,"angle":0}]},"head":{"rotate":[{"time":0,"angle":17.01,"curve":"stepped"},{"time":0.0667,"angle":17.01},{"time":0.1333,"angle":22.74},{"time":0.2,"angle":18.84,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"angle":12.15,"curve":[0.041,0.4,0.571,0.99]},{"time":0.3333,"angle":13.03},{"time":0.4,"angle":19.51},{"time":0.4667,"angle":17.19,"curve":[0.012,0.55,0.75,1]},{"time":0.5333,"angle":17.01}],"translate":[{"time":0.0667,"x":0,"y":0},{"time":0.1333,"x":-3.03,"y":7.17},{"time":0.2,"x":-26.63,"y":-6.2,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2667,"x":-20.96,"y":-8.8,"curve":[0.041,0.4,0.571,0.99]},{"time":0.3333,"x":3.33,"y":1},{"time":0.4,"x":-4.25,"y":10.04},{"time":0.4667,"x":-21.28,"y":1.14,"curve":[0.012,0.55,0.75,1]},{"time":0.5333,"x":0,"y":0}]}}},"run2":{"slots":{"foot_far":{"attachment":[{"time":0,"name":"foot_far_1"},{"time":0.1062,"name":"foot_far_2_bent"},{"time":0.1461,"name":"foot_far_1"}]},"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.3036,"name":"foot_near_2_bent"},{"time":0.3425,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":0.12,"curve":[0.606,0,0.501,0.98]},{"time":0.1,"angle":-10.44,"curve":[0.606,0,0.501,0.98]},{"time":0.2,"angle":-6.06,"curve":[0.606,0,0.501,0.98]},{"time":0.3,"angle":-12.34,"curve":[0.606,0,0.501,0.98]},{"time":0.4,"angle":-5.92}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-11.4,"curve":[0.176,0.56,0.453,0.98]},{"time":0.0333,"angle":-11.07},{"time":0.1333,"angle":-4.56,"curve":[0.617,0,0.26,0.99]},{"time":0.2333,"angle":-10.28,"curve":[0.617,0,0.26,0.99]},{"time":0.3333,"angle":-11.5,"curve":[0.749,0,0.71,0.59]},{"time":0.4,"angle":-11.4}]},"arm_upper_far":{"rotate":[{"time":0,"angle":255.49,"curve":[0.606,0,0.501,0.98]},{"time":0.1,"angle":265.24,"curve":[0.606,0,0.501,0.98]},{"time":0.2,"angle":258.48,"curve":[0.606,0,0.501,0.98]},{"time":0.3,"angle":264.56,"curve":[0.606,0,0.501,0.98]},{"time":0.4,"angle":259.77}],"translate":[{"time":0,"x":33.22,"y":80.29}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-19.9,"curve":[0.176,0.56,0.453,0.98]},{"time":0.0333,"angle":-18.98},{"time":0.1333,"angle":-20.1,"curve":[0.617,0,0.26,0.99]},{"time":0.2333,"angle":-19.4,"curve":[0.617,0,0.26,0.99]},{"time":0.3333,"angle":-15.47,"curve":[0.749,0,0.71,0.59]},{"time":0.4,"angle":-19.9}],"translate":[{"time":0,"x":-9.09,"y":-21.85}]},"foot_far":{"rotate":[{"time":0,"angle":16.53,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"angle":23.47},{"time":0.0667,"angle":6.52},{"time":0.0863,"angle":47.6},{"time":0.1262,"angle":49.64,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":-0.58,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"angle":0.62},{"time":0.2842,"angle":-5.23},{"time":0.3231,"angle":-23.4},{"time":0.3635,"angle":16.53}],"translate":[{"time":0,"x":-1.14,"y":9.6,"curve":"stepped"},{"time":0.0863,"x":-1.14,"y":9.6},{"time":0.1262,"x":28.82,"y":18.02,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":-1.14,"y":9.6}]},"foot_near":{"rotate":[{"time":0,"angle":-29.9,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"angle":-27.78},{"time":0.0863,"angle":-45.16},{"time":0.1262,"angle":-23.79,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":-0.17,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"angle":5.34},{"time":0.2648,"angle":-14.92},{"time":0.2842,"angle":12.5},{"time":0.3231,"angle":16.38},{"time":0.3635,"angle":-29.9}],"translate":[{"time":0,"x":1.98,"y":9.17,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"x":-4.49,"y":11.21},{"time":0.0863,"x":-1.76,"y":14.83},{"time":0.1262,"x":0,"y":0,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":0.84,"y":5.59,"curve":"stepped"},{"time":0.2453,"x":0.84,"y":5.59},{"time":0.2842,"x":0,"y":0},{"time":0.3231,"x":26.66,"y":5.54},{"time":0.3635,"x":1.98,"y":9.17}]},"hand_far":{"rotate":[{"time":0.0863,"angle":0},{"time":0.1262,"angle":6.24,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":15.1,"curve":"stepped"},{"time":0.2453,"angle":15.1},{"time":0.2842,"angle":0}],"translate":[{"time":0.1262,"x":0,"y":0,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":-0.08,"y":-5.06,"curve":"stepped"},{"time":0.2453,"x":-0.08,"y":-5.06},{"time":0.2842,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":28.92,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"angle":33.15},{"time":0.1,"angle":37.91},{"time":0.1667,"angle":27.41},{"time":0.2333,"angle":29.93},{"time":0.2667,"angle":34.16},{"time":0.3,"angle":37.93},{"time":0.3667,"angle":28.7},{"time":0.4,"angle":28.92}],"translate":[{"time":0,"x":-18.57,"y":-14.96,"curve":[0.25,0,0.865,0.25]},{"time":0.0667,"x":-3.63,"y":0.78},{"time":0.1667,"x":-13.4,"y":-8.96},{"time":0.2667,"x":-5.55,"y":-3.65},{"time":0.4,"x":-18.57,"y":-14.96}]},"leg_lower_far":{"rotate":[{"time":0,"angle":28.1,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"angle":40.17},{"time":0.0667,"angle":-26.21},{"time":0.0863,"angle":-51.79},{"time":0.1262,"angle":15.68,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":-48.88,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"angle":-52.02},{"time":0.2842,"angle":-70.86},{"time":0.3231,"angle":-91.25},{"time":0.3635,"angle":28.1}],"translate":[{"time":0.2453,"x":0,"y":0},{"time":0.2842,"x":-11.23,"y":-4.44},{"time":0.3231,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-81.02,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"angle":-96.35},{"time":0.0863,"angle":-123.98},{"time":0.1262,"angle":-139.32,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":2.56,"curve":[0.25,0,0.982,0.6]},{"time":0.2453,"angle":7.37},{"time":0.2648,"angle":-50.8},{"time":0.2842,"angle":-76.59},{"time":0.3231,"angle":-4.79},{"time":0.3635,"angle":-81.02}],"translate":[{"time":0,"x":7.36,"y":12.11,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"x":13.12,"y":10.68},{"time":0.0863,"x":15.67,"y":8.1},{"time":0.1262,"x":13.54,"y":8.03,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":0,"y":0,"curve":"stepped"},{"time":0.2453,"x":0,"y":0},{"time":0.2842,"x":8.23,"y":8.19},{"time":0.3231,"x":0,"y":0},{"time":0.3635,"x":7.36,"y":12.11}]},"leg_upper_far":{"rotate":[{"time":0,"angle":33.66,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"angle":27.01},{"time":0.0667,"angle":38.08},{"time":0.0863,"angle":19.09},{"time":0.1262,"angle":-52.46,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":-67.57,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"angle":-61.47},{"time":0.2842,"angle":-25.85},{"time":0.3231,"angle":1.11},{"time":0.3635,"angle":33.66}],"translate":[{"time":0.0863,"x":0,"y":0},{"time":0.1262,"x":3.74,"y":-36.04,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":-5.44,"y":-56.94,"curve":"stepped"},{"time":0.2453,"x":-5.44,"y":-56.94},{"time":0.2842,"x":-8.22,"y":-52.57},{"time":0.3231,"x":-0.6,"y":-27.64},{"time":0.3635,"x":0,"y":0}]},"leg_upper_near":{"rotate":[{"time":0,"angle":-2.28,"curve":[0.565,0,0.756,0.51]},{"time":0.0863,"angle":68.02,"curve":[0.272,0.36,0.571,0.73]},{"time":0.1262,"angle":105.52,"curve":[0.241,0.6,0.555,1]},{"time":0.166,"angle":81.89,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"angle":75.43},{"time":0.2648,"angle":84.6},{"time":0.2842,"angle":79.77},{"time":0.3231,"angle":4.53},{"time":0.3635,"angle":-2.28}],"translate":[{"time":0.0464,"x":0,"y":0},{"time":0.0863,"x":-2.09,"y":8.88},{"time":0.1262,"x":-1.4,"y":20,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"x":-8.91,"y":37.86,"curve":"stepped"},{"time":0.2453,"x":-8.91,"y":37.86},{"time":0.2842,"x":-1.67,"y":17.49,"curve":"stepped"},{"time":0.3231,"x":-1.67,"y":17.49},{"time":0.3635,"x":0,"y":0}]},"neck":{"rotate":[{"time":0,"angle":7.8}]},"torso":{"rotate":[{"time":0,"angle":-38,"curve":"stepped"},{"time":0.0464,"angle":-38},{"time":0.0863,"angle":-46.08,"curve":"stepped"},{"time":0.1262,"angle":-46.08,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":-36.77,"curve":"stepped"},{"time":0.2453,"angle":-36.77},{"time":0.2842,"angle":-46.08,"curve":"stepped"},{"time":0.3231,"angle":-46.08},{"time":0.3635,"angle":-38}],"translate":[{"time":0,"x":0,"y":47.44,"curve":[0.25,0,0.865,0.25]},{"time":0.0464,"x":0,"y":8.63},{"time":0.0863,"x":0,"y":-46.07},{"time":0.1262,"x":0,"y":-34.75,"curve":[0.041,0.46,0.652,0.99]},{"time":0.2,"x":0,"y":53.68,"curve":[0.25,0,0.939,0.69]},{"time":0.2453,"x":0,"y":1.92},{"time":0.2842,"x":0,"y":-46.07},{"time":0.3231,"x":0,"y":-15.62},{"time":0.4,"x":0,"y":47.44}]},"waist":{"rotate":[{"time":0,"angle":20,"curve":"stepped"},{"time":0.0464,"angle":20},{"time":0.0863,"angle":29.28,"curve":"stepped"},{"time":0.1262,"angle":29.28,"curve":[0.041,0.46,0.652,0.99]},{"time":0.166,"angle":20,"curve":"stepped"},{"time":0.2453,"angle":20},{"time":0.2842,"angle":29.28,"curve":"stepped"},{"time":0.3231,"angle":29.28},{"time":0.3635,"angle":20}]}}},"walk":{"slots":{"foot_far":{"attachment":[{"time":0,"name":"foot_far_2_bent"},{"time":0.1667,"name":"foot_far_1"},{"time":0.4333,"name":"foot_far_1"},{"time":0.6835,"name":"foot_far_2_bent"}]},"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.2667,"name":"foot_near_2_bent"},{"time":0.4333,"name":"foot_near_2_bent"},{"time":0.6,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-74.86,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":-68.32,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-51.45,"curve":"stepped"},{"time":0.3333,"angle":-51.45,"curve":[0.152,0.33,0.658,0.84]},{"time":0.5,"angle":-78.82,"curve":"stepped"},{"time":0.7333,"angle":-78.82,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-74.86}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-59.09,"curve":[0.087,0.5,0.709,1]},{"time":0.1333,"angle":-68.85,"curve":[0.841,0.01,0.59,0.98]},{"time":0.5,"angle":-46.93,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-41.67,"curve":"stepped"},{"time":0.7333,"angle":-41.67,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-59.09}]},"arm_upper_far":{"rotate":[{"time":0,"angle":2.7,"curve":"stepped"},{"time":0.0667,"angle":2.7,"curve":[0.509,0,0.498,0.97]},{"time":0.4333,"angle":-62.11,"curve":"stepped"},{"time":0.5,"angle":-62.11,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-43.67},{"time":0.7333,"angle":-31.6,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":2.7}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.509,0,0.498,0.97]},{"time":0.4333,"x":0,"y":76.96,"curve":"stepped"},{"time":0.5,"x":0,"y":76.96,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":-2.07,"y":67.86},{"time":0.7333,"x":-4.96,"y":31.69,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":24.97,"curve":"stepped"},{"time":0.0667,"angle":24.97,"curve":[0.571,0,0.385,0.98]},{"time":0.4333,"angle":76.92,"curve":"stepped"},{"time":0.5,"angle":76.92,"curve":[0.639,0,0.412,0.97]},{"time":0.8667,"angle":24.97}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.571,0,0.385,0.98]},{"time":0.5,"x":-20.37,"y":-29.42,"curve":[0.639,0,0.412,0.97]},{"time":0.8667,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":49.17,"curve":"stepped"},{"time":0.0667,"angle":49.17,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-17.13},{"time":0.3333,"angle":17.26,"curve":[0.152,0.33,0.547,0.94]},{"time":0.5,"angle":11.08,"curve":"stepped"},{"time":0.6,"angle":11.08},{"time":0.7333,"angle":51.78,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":49.17}],"translate":[{"time":0,"x":37.41,"y":27.05,"curve":"stepped"},{"time":0.0667,"x":37.41,"y":27.05,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"x":-2.24,"y":21.46},{"time":0.3333,"x":-6.61,"y":17.14,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":2.74,"y":10.43,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"x":-1.07,"y":8.5,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":3.42,"y":9.03},{"time":0.7333,"x":31.16,"y":24.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":37.41,"y":27.05}]},"foot_near":{"rotate":[{"time":0,"angle":-16.34,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":25.74,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":17.62,"curve":"stepped"},{"time":0.5,"angle":17.62,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-55.65},{"time":0.7333,"angle":-32.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-16.34}],"translate":[{"time":0,"x":-7.23,"y":5.9,"curve":"stepped"},{"time":0.1667,"x":-7.23,"y":5.9},{"time":0.3333,"x":19.69,"y":12.11,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":26.34,"y":14.77,"curve":"stepped"},{"time":0.5,"x":26.34,"y":14.77,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":3.86,"y":12.05,"curve":"stepped"},{"time":0.7333,"x":3.86,"y":12.05,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":-7.23,"y":5.9}]},"head":{"rotate":[{"time":0,"angle":2.1,"curve":"stepped"},{"time":0.0667,"angle":2.1,"curve":[0.25,0,0.75,1]},{"time":0.1667,"angle":5.14,"curve":"stepped"},{"time":0.3333,"angle":5.14,"curve":[0.087,0.5,0.709,1]},{"time":0.4333,"angle":-1.14,"curve":"stepped"},{"time":0.5,"angle":-1.14,"curve":[0.25,0,0.985,0.6]},{"time":0.6,"angle":-2.57,"curve":"stepped"},{"time":0.7333,"angle":-2.57,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":2.1}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.16,0.54,0.75,1]},{"time":0.1667,"x":-2.25,"y":-0.19,"curve":"stepped"},{"time":0.3333,"x":-2.25,"y":-0.19,"curve":[0.25,0,0.985,0.6]},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":-4.52,"y":0.07,"curve":"stepped"},{"time":0.7333,"x":-4.52,"y":0.07,"curve":[0.25,0,0.75,1]},{"time":0.8667,"x":0,"y":0}]},"leg_lower_far":{"rotate":[{"time":0,"angle":-6.6,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":1.58,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-42.44},{"time":0.3333,"angle":-47.3,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":20.36,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"angle":35.54,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-19.2},{"time":0.7333,"angle":-26.92,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-6.6}],"translate":[{"time":0.5,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":-9.58,"y":-0.57,"curve":"stepped"},{"time":0.7333,"x":-9.58,"y":-0.57,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":-7.98,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":1.01,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-50.99},{"time":0.3333,"angle":-44.04,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":-23.3,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"angle":-17.55,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-90.21},{"time":0.7333,"angle":-89.45,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-7.98}],"translate":[{"time":0.0667,"x":0,"y":0,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"x":1.67,"y":6.96},{"time":0.3333,"x":2,"y":11.47,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":7.46,"y":12.21,"curve":"stepped"},{"time":0.7333,"x":7.46,"y":12.21,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":0,"y":0}]},"leg_upper_far":{"rotate":[{"time":0,"angle":-43.48,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":-50.63,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-31.42},{"time":0.3333,"angle":-6.01,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":-6.04,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"angle":-7.7,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":9.28},{"time":0.7333,"angle":-22.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-43.48}],"translate":[{"time":0,"x":-0.57,"y":-61.18,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"x":-0.38,"y":-65.7,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"x":-5.54,"y":-38.93},{"time":0.3333,"x":-2.97,"y":-20.44,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":-0.65,"y":-25.02,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"x":1.42,"y":-22.59,"curve":"stepped"},{"time":0.6,"x":1.42,"y":-22.59},{"time":0.7333,"x":2.68,"y":-33.84,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":-0.57,"y":-61.18}]},"leg_upper_near":{"rotate":[{"time":0,"angle":44.58,"curve":[0.087,0.5,0.709,1]},{"time":0.0667,"angle":45.6,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":52.34},{"time":0.3333,"angle":20.73,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":3.69,"curve":[0.16,0.54,0.75,1]},{"time":0.5,"angle":-1.79,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":45.79},{"time":0.7333,"angle":70.05,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":44.58}],"translate":[{"time":0,"x":1.94,"y":40.95,"curve":"stepped"},{"time":0.1667,"x":1.94,"y":40.95},{"time":0.3333,"x":4.37,"y":18.44,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":4.66,"y":-1.97,"curve":"stepped"},{"time":0.5,"x":4.66,"y":-1.97,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":-2.69,"y":22.24},{"time":0.7333,"x":3.3,"y":29.75,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":1.94,"y":40.95}]},"torso":{"rotate":[{"time":0,"angle":-1.26,"curve":"stepped"},{"time":0.0667,"angle":-1.26,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"angle":-5.02,"curve":[0.25,0,0.931,0.61]},{"time":0.3333,"angle":-3.79,"curve":[0.085,0.35,0.587,0.87]},{"time":0.4333,"angle":0.95,"curve":"stepped"},{"time":0.5,"angle":0.95,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":1.01,"curve":"stepped"},{"time":0.7333,"angle":1.01,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":-1.26}],"translate":[{"time":0,"x":0,"y":6.79,"curve":"stepped"},{"time":0.0667,"x":0,"y":6.79,"curve":[0.25,0,0.985,0.6]},{"time":0.1667,"x":0,"y":-22.63},{"time":0.3333,"x":0,"y":-9.05,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"x":0,"y":6.79,"curve":"stepped"},{"time":0.5,"x":0,"y":6.79,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"x":0,"y":-18.11,"curve":[0.066,0.45,0.75,1]},{"time":0.7333,"x":0,"y":-22.63,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"x":0,"y":6.79}]},"waist":{"rotate":[{"time":0,"angle":2.49,"curve":"stepped"},{"time":0.1667,"angle":2.49},{"time":0.3333,"angle":1.6,"curve":[0.152,0.33,0.658,0.84]},{"time":0.4333,"angle":-1.75,"curve":"stepped"},{"time":0.5,"angle":-1.75,"curve":[0.25,0,0.952,0.48]},{"time":0.6,"angle":-3.81,"curve":"stepped"},{"time":0.7333,"angle":-3.81,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8667,"angle":2.49}],"translate":[{"time":0.6,"x":0,"y":0},{"time":0.6667,"x":4.52,"y":-0.07},{"time":0.7333,"x":0,"y":0}]}}},"walk2":{"slots":{"foot_far":{"attachment":[{"time":0,"name":"foot_far_2_bent"},{"time":0.1,"name":"foot_far_1"},{"time":0.3667,"name":"foot_far_1"},{"time":0.6333,"name":"foot_far_2_bent"}]},"foot_near":{"attachment":[{"time":0,"name":"foot_near_1"},{"time":0.2,"name":"foot_near_2_bent"},{"time":0.3667,"name":"foot_near_2_bent"},{"time":0.5333,"name":"foot_near_1"}]},"leg_lower_near":{"attachment":[{"time":0,"name":"leg_lower_near_2"}]}},"bones":{"arm_lower_far":{"rotate":[{"time":0,"angle":-0.69,"curve":[0.516,0,0.765,0.48]},{"time":0.2,"angle":21.97,"curve":[0.234,0.47,0.453,0.98]},{"time":0.4333,"angle":-3,"curve":[0.539,0,0.752,0.51]},{"time":0.6667,"angle":-18.02,"curve":[0.225,0.51,0.478,0.98]},{"time":0.8667,"angle":-0.69}]},"arm_lower_near":{"rotate":[{"time":0,"angle":-6.95,"curve":[0.516,0,0.765,0.48]},{"time":0.2,"angle":-22.88,"curve":[0.234,0.47,0.453,0.98]},{"time":0.4333,"angle":7.27,"curve":[0.539,0,0.752,0.51]},{"time":0.6667,"angle":19.19,"curve":[0.225,0.51,0.478,0.98]},{"time":0.8667,"angle":-6.95}]},"arm_upper_far":{"rotate":[{"time":0,"angle":21.26,"curve":[0.516,0,0.453,0.98]},{"time":0.4333,"angle":222.02,"curve":[0.516,0,0.453,0.98]},{"time":0.8667,"angle":21.26}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.516,0,0.453,0.98]},{"time":0.4333,"x":3.56,"y":34.19,"curve":[0.516,0,0.453,0.98]},{"time":0.8667,"x":0,"y":0}]},"arm_upper_near":{"rotate":[{"time":0,"angle":-13.1,"curve":[0.516,0,0.453,0.98]},{"time":0.4333,"angle":-257.34,"curve":[0.516,0,0.453,0.98]},{"time":0.8667,"angle":-13.1}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.516,0,0.453,0.98]},{"time":0.4333,"x":-2.96,"y":-28.49,"curve":[0.516,0,0.453,0.98]},{"time":0.8667,"x":0,"y":0}]},"foot_far":{"rotate":[{"time":0,"angle":49.17,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":-17.13},{"time":0.2667,"angle":17.26,"curve":[0.152,0.33,0.547,0.94]},{"time":0.4333,"angle":11.08,"curve":"stepped"},{"time":0.5333,"angle":11.08},{"time":0.6667,"angle":51.78,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":49.17}],"translate":[{"time":0,"x":37.41,"y":27.05,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"x":-2.24,"y":21.46},{"time":0.2667,"x":-3.7,"y":12.97,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":1.82,"y":5.63,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"x":2.22,"y":6.56,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":3.95,"y":6.92},{"time":0.6667,"x":31.16,"y":24.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":37.41,"y":27.05}]},"foot_near":{"rotate":[{"time":0.1,"angle":0},{"time":0.2667,"angle":25.74,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":17.62,"curve":"stepped"},{"time":0.4333,"angle":17.62,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":-55.65},{"time":0.6667,"angle":-32.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-16.34},{"time":0.8667,"angle":0}],"translate":[{"time":0,"x":-7.23,"y":5.9,"curve":"stepped"},{"time":0.1,"x":-7.23,"y":5.9},{"time":0.2667,"x":19.69,"y":12.11,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":26.34,"y":14.77,"curve":"stepped"},{"time":0.4333,"x":26.34,"y":14.77,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":3.86,"y":12.05,"curve":"stepped"},{"time":0.6667,"x":3.86,"y":12.05,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":-7.23,"y":5.9}]},"leg_lower_far":{"rotate":[{"time":0,"angle":1.58,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":-42.44},{"time":0.2667,"angle":-47.3,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":20.36,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"angle":35.54,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":-19.2},{"time":0.6667,"angle":-26.92,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-6.6},{"time":0.8667,"angle":1.58}],"translate":[{"time":0.4333,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":-9.58,"y":-0.57,"curve":"stepped"},{"time":0.6667,"x":-9.58,"y":-0.57,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":0,"y":0}]},"leg_lower_near":{"rotate":[{"time":0,"angle":1.01,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":-50.99},{"time":0.2667,"angle":-44.04,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":-23.3,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"angle":-17.55,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":-90.21},{"time":0.6667,"angle":-89.45,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-7.98},{"time":0.8667,"angle":1.01}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"x":1.67,"y":6.96},{"time":0.2667,"x":2,"y":11.47,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":7.46,"y":12.21,"curve":"stepped"},{"time":0.6667,"x":7.46,"y":12.21,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":0,"y":0}]},"leg_upper_far":{"rotate":[{"time":0,"angle":-50.63,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":-31.42},{"time":0.2667,"angle":-6.01,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":-6.04,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"angle":-7.7,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":9.28},{"time":0.6667,"angle":-22.53,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-43.48},{"time":0.8667,"angle":-50.63}],"translate":[{"time":0,"x":-0.38,"y":-65.7,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"x":-5.54,"y":-38.93},{"time":0.2667,"x":-2.97,"y":-20.44,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":-0.65,"y":-25.02,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"x":1.42,"y":-22.59,"curve":"stepped"},{"time":0.5333,"x":1.42,"y":-22.59},{"time":0.6667,"x":2.68,"y":-33.84,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":-0.57,"y":-61.18},{"time":0.8667,"x":-0.38,"y":-65.7}]},"leg_upper_near":{"rotate":[{"time":0,"angle":45.6,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":52.34},{"time":0.2667,"angle":20.73,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":3.69,"curve":[0.16,0.54,0.75,1]},{"time":0.4333,"angle":-1.79,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":45.79},{"time":0.6667,"angle":70.05,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":44.58},{"time":0.8667,"angle":45.6}],"translate":[{"time":0,"x":1.94,"y":40.95,"curve":"stepped"},{"time":0.1,"x":1.94,"y":40.95},{"time":0.2667,"x":4.37,"y":18.44,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":4.66,"y":-1.97,"curve":"stepped"},{"time":0.4333,"x":4.66,"y":-1.97,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":-2.69,"y":22.24},{"time":0.6667,"x":3.3,"y":29.75,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":1.94,"y":40.95}]},"torso":{"rotate":[{"time":0,"angle":7.73,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"angle":3.97,"curve":[0.25,0,0.931,0.61]},{"time":0.2667,"angle":5.19,"curve":[0.085,0.35,0.587,0.87]},{"time":0.3667,"angle":9.94,"curve":"stepped"},{"time":0.4333,"angle":9.94,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":10.01,"curve":"stepped"},{"time":0.6667,"angle":10.01,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":7.73}],"translate":[{"time":0,"x":0,"y":6.79,"curve":[0.25,0,0.985,0.6]},{"time":0.1,"x":0,"y":-22.63},{"time":0.2667,"x":0,"y":-9.05,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"x":0,"y":6.79,"curve":"stepped"},{"time":0.4333,"x":0,"y":6.79,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":0,"y":-18.11,"curve":[0.066,0.45,0.75,1]},{"time":0.6667,"x":0,"y":-22.63,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"x":0,"y":6.79}]},"waist":{"rotate":[{"time":0,"angle":-6.5,"curve":"stepped"},{"time":0.1,"angle":-6.5},{"time":0.2667,"angle":-7.39,"curve":[0.152,0.33,0.658,0.84]},{"time":0.3667,"angle":-10.75,"curve":"stepped"},{"time":0.4333,"angle":-10.75,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"angle":-12.81,"curve":"stepped"},{"time":0.6667,"angle":-12.81,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-6.5}],"translate":[{"time":0.5333,"x":0,"y":0},{"time":0.6,"x":4.52,"y":-0.07},{"time":0.6667,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":-0.89,"curve":[0.25,0,0.75,1]},{"time":0.1,"angle":2.14,"curve":"stepped"},{"time":0.2667,"angle":2.14,"curve":[0.087,0.5,0.709,1]},{"time":0.3667,"angle":-1.74,"curve":[0.179,0.32,0.709,0.84]},{"time":0.4333,"angle":-0.65,"curve":[0.25,0,0.985,0.6]},{"time":0.5333,"angle":-4.15},{"time":0.6667,"angle":-5.57,"curve":[0.179,0.32,0.709,0.84]},{"time":0.8,"angle":-0.89}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.16,0.54,0.75,1]},{"time":0.1,"x":-2.25,"y":-0.19,"curve":"stepped"},{"time":0.2667,"x":-2.25,"y":-0.19,"curve":[0.25,0,0.985,0.6]},{"time":0.3667,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":[0.25,0,0.952,0.48]},{"time":0.5333,"x":-4.52,"y":0.07,"curve":"stepped"},{"time":0.6667,"x":-4.52,"y":0.07,"curve":[0.25,0,0.75,1]},{"time":0.8,"x":0,"y":0}]}}}}},"orangegirl":{"skeleton":{"hash":"ysGOqrkpMLVUgrgdiiFqM37kSRU","spine":"3.6.39","width":379.5,"height":614.39},"bones":[{"name":"root"},{"name":"bone","parent":"root","x":-0.51,"y":332.94},{"name":"Layer 14","parent":"bone","length":29.21,"rotation":151.14,"x":-2.25,"y":3},{"name":"bone2","parent":"Layer 14","length":30.54,"rotation":-36.21,"x":30.23,"y":-0.47},{"name":"bone3","parent":"bone2","length":37.51,"rotation":-13.39,"x":41.28,"y":-0.16},{"name":"Layer 24","parent":"bone3","length":22.56,"rotation":3.6,"x":59,"y":4.04},{"name":"Layer 15","parent":"Layer 24","length":12.95,"rotation":-4.95,"x":25.32,"y":1.7},{"name":"Layer 16","parent":"Layer 15","x":25.12,"y":-7.75},{"name":"Layer 17","parent":"Layer 15","x":44.63,"y":18.53},{"name":"Layer 18","parent":"Layer 15","x":18.49,"y":22.6},{"name":"Layer 19","parent":"Layer 15","x":67.16,"y":11.77},{"name":"Layer 20","parent":"Layer 15","x":45.29,"y":-19.5},{"name":"Layer 21","parent":"Layer 15","x":87.67,"y":-37.52},{"name":"Layer 22","parent":"Layer 15","length":24.96,"rotation":152.19,"x":38.81,"y":-47.49},{"name":"Layer 23","parent":"Layer 15","length":19.97,"rotation":138.09,"x":73.77,"y":4.55},{"name":"Layer 25","parent":"Layer 24","x":4.51,"y":14.03},{"name":"Layer 27","parent":"bone3","length":53.54,"rotation":144.08,"x":53.42,"y":41.32},{"name":"Layer 30","parent":"Layer 27","length":60.07,"rotation":-6.74,"x":61.3,"y":1.04},{"name":"Layer 29","parent":"Layer 30","x":74.61,"y":-3.14},{"name":"Layer 36","parent":"bone3","length":66.27,"rotation":136.15,"x":46.16,"y":5.68},{"name":"Layer 31","parent":"Layer 36","length":65.18,"rotation":-3.6,"x":79.83,"y":-2.75},{"name":"Layer 35","parent":"Layer 31","length":39.58,"rotation":8.51,"x":89.2,"y":5.34},{"name":"Layer 33","parent":"Layer 35","length":47.46,"rotation":-3.6,"x":21.43,"y":-42.96,"transform":"noScale"},{"name":"Layer 34","parent":"Layer 31","x":76.08,"y":5.56},{"name":"Layer 41","parent":"bone","length":126.02,"rotation":-81.49,"x":27,"y":-21.75},{"name":"Layer 37","parent":"Layer 41","length":105.87,"rotation":-0.9,"x":133.25,"y":3.56},{"name":"Layer 38","parent":"Layer 37","length":43.56,"rotation":-10.27,"x":147.15,"y":-3.02},{"name":"Layer 40","parent":"Layer 37","x":136.47,"y":-0.08},{"name":"Layer 44","parent":"bone","length":99.18,"rotation":-93.15,"x":-6.75,"y":-44.25},{"name":"Layer 42","parent":"Layer 44","length":93.46,"rotation":-5.84,"x":112.82,"y":-2.84},{"name":"Layer 43","parent":"Layer 44","x":-12.07,"y":-27.27},{"name":"Layer 45","parent":"Layer 42","length":17.51,"rotation":-34.1,"x":139.35,"y":2.27},{"name":"Layer 46","parent":"Layer 42","x":124.88,"y":-3.92},{"name":"bone17","parent":"bone3","x":11.84,"y":9.36},{"name":"Layer 48","parent":"bone17","length":18.62,"rotation":149.1,"x":-3.89,"y":3.38},{"name":"Layer 49","parent":"Layer 15","rotation":4.95,"x":74.42,"y":-67.22},{"name":"bone4","parent":"Layer 45","length":26.03,"rotation":-35.02,"x":25.04,"y":2.87},{"name":"bone5","parent":"Layer 21","length":29.91,"rotation":114.17,"x":6.98,"y":19.16},{"name":"bone6","parent":"Layer 21","length":25.84,"rotation":138.72,"x":-6.19,"y":6.11},{"name":"bone7","parent":"Layer 21","length":31.93,"rotation":157.02,"x":-15.86,"y":-7.15},{"name":"bone8","parent":"Layer 21","length":29.19,"rotation":-176.24,"x":-20.03,"y":-22.23},{"name":"bone9","parent":"Layer 22","length":22.37,"rotation":-9.39,"x":25.75,"y":0.87},{"name":"bone10","parent":"bone9","length":14.44,"rotation":-7.24,"x":25.48,"y":0.57},{"name":"bone11","parent":"Layer 49","length":29.98,"rotation":157.73,"x":-21.92,"y":-4.9},{"name":"bone12","parent":"bone11","length":26.46,"rotation":-2.7,"x":32.88,"y":-0.23},{"name":"bone13","parent":"bone12","length":26.3,"rotation":-4.95,"x":31.31,"y":-0.61},{"name":"bone14","parent":"Layer 23","length":16.35,"rotation":1.35,"x":23.47,"y":1.01},{"name":"bone15","parent":"bone14","length":23.67,"rotation":5.4,"x":19.2,"y":0.08},{"name":"bone16","parent":"Layer 48","length":19.8,"rotation":-6.29,"x":23.57,"y":-0.3}],"slots":[{"name":"Layer 27","bone":"Layer 27","attachment":"orangegirl/Layer 27"},{"name":"Layer 30","bone":"Layer 30","attachment":"orangegirl/Layer 30"},{"name":"Layer 29","bone":"Layer 29","attachment":"orangegirl/Layer 29"},{"name":"Layer 28","bone":"bone3","attachment":"orangegirl/Layer 28"},{"name":"Layer 43","bone":"Layer 43","attachment":"orangegirl/Layer 43"},{"name":"Layer 45","bone":"Layer 45","attachment":"orangegirl/Layer 45"},{"name":"Layer 47","bone":"Layer 46","attachment":"orangegirl/Layer 47"},{"name":"Layer 42","bone":"Layer 42","attachment":"orangegirl/Layer 42"},{"name":"Layer 46","bone":"Layer 46","attachment":"orangegirl/Layer 46"},{"name":"Layer 44","bone":"Layer 44","attachment":"orangegirl/Layer 44"},{"name":"Layer 14","bone":"Layer 14","attachment":"orangegirl/Layer 14"},{"name":"Layer 48","bone":"Layer 48","attachment":"orangegirl/Layer 48"},{"name":"Layer 39","bone":"Layer 40","attachment":"orangegirl/Layer 39"},{"name":"Layer 38","bone":"Layer 38","attachment":"orangegirl/Layer 38"},{"name":"Layer 37","bone":"Layer 37","attachment":"orangegirl/Layer 37"},{"name":"Layer 41","bone":"Layer 41","attachment":"orangegirl/Layer 41"},{"name":"Layer 40","bone":"Layer 40","attachment":"orangegirl/Layer 40"},{"name":"Layer 32","bone":"Layer 33","attachment":"orangegirl/Layer 32"},{"name":"Layer 31","bone":"Layer 31","attachment":"orangegirl/Layer 31"},{"name":"Layer 25","bone":"Layer 25","attachment":"orangegirl/Layer 25"},{"name":"Layer 24","bone":"Layer 24","attachment":"orangegirl/Layer 24"},{"name":"Layer 26","bone":"Layer 25","attachment":"orangegirl/Layer 26"},{"name":"Layer 36","bone":"Layer 36","attachment":"orangegirl/Layer 36"},{"name":"Layer 35","bone":"Layer 35","attachment":"orangegirl/Layer 35"},{"name":"Layer 34","bone":"Layer 34","attachment":"orangegirl/Layer 34"},{"name":"Layer 33","bone":"Layer 33","attachment":"orangegirl/Layer 33"},{"name":"Layer 23","bone":"Layer 23","attachment":"orangegirl/Layer 23"},{"name":"Layer 49","bone":"Layer 49","attachment":"orangegirl/Layer 49"},{"name":"Layer 15","bone":"Layer 15","attachment":"orangegirl/Layer 15"},{"name":"Layer 20","bone":"Layer 20","attachment":"orangegirl/Layer 20"},{"name":"Layer 16","bone":"Layer 16","attachment":"orangegirl/Layer 16"},{"name":"Layer 22","bone":"Layer 22","attachment":"orangegirl/Layer 22"},{"name":"Layer 19","bone":"Layer 19","attachment":"orangegirl/Layer 19"},{"name":"Layer 21","bone":"Layer 21","attachment":"orangegirl/Layer 21"},{"name":"Layer 18","bone":"Layer 18","attachment":"orangegirl/Layer 18"},{"name":"Layer 17","bone":"Layer 17","attachment":"orangegirl/Layer 17"}],"skins":{"default":{"Layer 14":{"orangegirl/Layer 14":{"type":"mesh","uvs":[0.15356,0.32471,0.17092,0.15966,0.30268,0.06831,0.4661,0.12852,0.49011,0.26624,0.50644,0.35437,0.60184,0.47595,0.73358,0.5185,0.88671,0.55811,0.99559,0.66578,1,0.824,0.9482,0.94753,0.75822,0.99632,0.52228,0.95065,0.3895,0.82504,0.34966,0.72643,0.33026,0.65584,0.26182,0.61017,0.18318,0.48768,0.31494,0.25516,0.34966,0.41709,0.44874,0.54373,0.56415,0.62055,0.74086,0.67557,0.64076,0.82089,0.86955,0.83127,0.88691,0.67557,0.34584,0.52141],"triangles":[0,19,20,20,4,5,20,19,4,0,1,19,19,3,4,1,2,19,19,2,3,16,17,27,17,18,27,27,18,20,18,0,20,14,15,22,15,21,22,15,16,21,16,27,21,22,6,7,22,21,6,27,20,21,21,5,6,21,20,5,13,24,12,12,25,11,12,24,25,13,14,24,11,25,10,24,23,25,25,26,10,25,23,26,24,14,22,26,9,10,24,22,23,23,8,26,26,8,9,22,7,23,23,7,8],"vertices":[2,3,62.59,29.3,0.33333,4,13.9,33.6,0.66667,1,4,43.02,24.37,1,1,4,54.57,-3.13,1,1,4,37.62,-30.87,1,2,3,45.84,-32.31,0.33333,4,11.9,-30.21,0.66667,3,2,37.63,-40.9,0.33333,3,29.85,-28.25,0.33333,4,-4.6,-29.97,0.33333,2,2,11.2,-29.92,0.66667,3,2.05,-35.01,0.33333,2,1,27.02,26.79,0.8,2,-14.15,-34.97,0.2,1,1,55.66,19.52,1,1,1,76.03,-0.29,1,1,1,76.87,-29.4,1,1,1,67.19,-52.13,1,1,1,31.66,-61.12,1,1,1,-12.46,-52.74,1,2,1,-37.3,-29.63,0.66667,2,14.94,45.5,0.33333,2,1,-44.75,-11.49,0.33333,2,30.23,33.21,0.66667,2,2,39.68,23.59,0.66667,3,-6.59,24.99,0.33333,2,2,54.95,22.41,0.33333,3,6.43,33.06,0.66667,2,3,33.06,36.91,0.66667,4,-16.58,34.16,0.33333,2,3,61.49,-3.46,0.5,4,20.43,1.48,0.5,3,2,57.72,-16.63,0.33333,3,31.73,3.2,0.33333,4,-10.07,1.06,0.33333,2,2,30.24,-5.17,0.66667,3,2.79,-3.79,0.33333,2,1,-4.65,8,0.33333,2,4.52,-3.22,0.66667,2,1,28.39,-2.11,0.66667,2,-29.3,-10.32,0.33333,1,1,9.69,-28.85,1,1,1,52.47,-30.75,1,1,1,55.71,-2.09,1,3,2,49.08,0.52,0.42617,3,14.62,11.93,0.45254,4,-28.73,5.59,0.12129],"hull":19}},"Layer 15":{"orangegirl/Layer 15":{"type":"mesh","uvs":[0.22206,0.00733,0.0992,0.18843,0.09152,0.39516,0,0.53184,0,0.73516,0.04545,0.9043,0.15103,1,0.45818,1,0.74997,0.95385,0.9477,0.82058,1,0.62069,1,0.29436,0.821,0.08421,0.57144,4.9E-4,0.45626,0.05858,0.27389,0.26702,0.19902,0.51305,0.11456,0.59164,0.128,0.69074,0.11264,0.80179,0.14911,0.90772,0.43131,0.79154,0.67895,0.51647,0.74613,0.25506],"triangles":[7,20,21,7,21,8,5,20,6,7,6,20,9,8,22,5,19,20,20,19,21,5,4,19,8,21,22,9,22,10,19,18,21,19,4,18,18,16,21,21,16,22,4,17,18,4,3,17,18,17,16,10,22,11,22,23,11,16,17,2,17,3,2,16,15,22,22,15,23,23,15,14,23,14,13,16,2,15,2,1,15,23,12,11,1,0,15,15,0,14,23,13,12,14,0,13],"vertices":[93.56,3.68,77.67,17.64,57.44,21.96,45.42,32.39,25.41,35.97,8.05,34.98,-3.03,27.41,-7.85,0.51,-7.89,-25.87,2.12,-45.54,20.97,-53.65,53.1,-59.41,76.59,-47.44,88.75,-27.05,84.84,-15.94,67.19,3.72,44.15,14.62,37.74,23.4,27.77,23.98,17.08,27.28,6.08,25.95,13.09,-0.82,36.27,-27.36,60.95,-37.86],"hull":14}},"Layer 16":{"orangegirl/Layer 16":{"type":"mesh","uvs":[0.38018,0,0.65476,0.18361,0.98426,0.38649,1,0.80828,0.76459,1,0.26424,1,0,0.88303,0,0.41319,0,0,0.28255,0.49861,0.59374,0.68548],"triangles":[5,10,4,4,10,3,5,9,10,5,6,9,6,7,9,10,2,3,10,1,2,10,9,1,9,0,1,9,7,0,7,8,0],"vertices":[24.37,-3.41,17.23,-9.94,9.21,-17.87,-4.15,-15.93,-9.03,-8.36,-6.56,5.43,-1.57,12.06,13.23,9.4,26.25,7.07,9.15,2.1,1.72,-5.42],"hull":9}},"Layer 17":{"orangegirl/Layer 17":{"type":"mesh","uvs":[0.67837,0,1,0.20649,1,0.52086,0.69546,0.95824,0.16581,1,0,0.79422,0,0.42518,0,0,0.22561,0,0.19998,0.41834,0.51606,0.54136],"triangles":[4,10,3,10,5,9,10,4,5,3,10,2,5,6,9,10,9,0,2,10,1,0,9,8,10,0,1,6,7,9,9,7,8],"vertices":[16.91,-7.9,10.69,-13.32,2.95,-11.93,-6.73,-4.01,-5.89,6.6,-0.24,8.96,8.84,7.33,19.3,5.46,18.5,1.02,8.3,3.37,4.16,-2.31],"hull":9}},"Layer 18":{"orangegirl/Layer 18":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[-8.96,-10.18,-5.61,8.52,8.17,6.05,4.82,-12.65],"hull":4}},"Layer 19":{"orangegirl/Layer 19":{"x":-1.27,"y":-2.37,"scaleX":1.154,"scaleY":1.154,"rotation":-100.18,"width":13,"height":7}},"Layer 20":{"orangegirl/Layer 20":{"x":0.62,"y":-3.07,"rotation":-100.18,"width":24,"height":19}},"Layer 21":{"orangegirl/Layer 21":{"type":"mesh","uvs":[0.31353,0.00659,0.23242,0.03221,0.11161,0.06638,0.13923,0.13473,0.07883,0.23083,0.04258,0.28209,0,0.29276,0,0.40168,0.04258,0.45294,0.04949,0.5405,0.15131,0.51487,0.23415,0.58321,0.39464,0.67291,0.51717,0.74339,0.59483,0.86512,0.67077,0.98258,0.70183,0.94414,0.7467,1,0.80193,0.96336,0.86233,1,0.89512,0.91424,1,0.95909,1,0.80746,1,0.65155,1,0.41663,0.9072,0.2052,0.66041,0.04289,0.53616,0,0.38429,0,0.44814,0.12191,0.33252,0.1454,0.20998,0.23724,0.13232,0.37605,0.54651,0.22869,0.405,0.29917,0.3446,0.3846,0.63798,0.32693,0.56722,0.44867,0.48438,0.59816,0.76051,0.39955,0.68285,0.6003,0.65178,0.79037,0.85025,0.45721,0.86233,0.58108,0.86233,0.77756],"triangles":[43,42,24,43,24,23,44,43,23,44,23,22,20,44,22,18,16,44,20,22,21,20,18,44,17,16,18,19,18,20,40,39,42,41,40,44,16,41,44,40,37,39,13,38,40,41,13,40,14,13,41,15,14,41,16,15,41,40,42,43,40,43,44,39,36,25,38,35,37,12,11,38,37,33,36,37,36,39,38,37,40,12,38,13,30,0,28,34,30,29,35,34,37,11,35,38,3,2,1,1,0,30,3,1,30,31,3,30,4,3,31,31,30,34,32,4,31,5,4,32,35,31,34,32,31,35,7,6,5,7,5,32,8,7,32,10,32,35,9,8,32,10,9,32,11,10,35,42,39,25,24,42,25,29,28,27,30,28,29,33,27,26,36,33,26,29,27,33,34,29,33,25,36,26,34,33,37],"vertices":[2,12,18.87,27.41,0.21,37,2.66,-14.22,0.79,1,37,10.45,-17.06,1,1,37,21.87,-21.55,1,1,37,22.69,-15.49,1,1,37,31.97,-12.51,1,1,37,37.24,-11.15,1,1,37,41.21,-12.82,1,1,37,46.12,-5.63,1,1,37,44.95,0.13,1,1,37,48.34,6.3,1,1,37,38.86,10.3,1,1,37,35.17,19.44,1,1,38,36.7,1.89,1,1,39,34.52,-12.64,1,1,39,42.31,-2.98,1,1,39,49.8,6.43,1,1,39,46.12,8.75,1,1,40,45.39,-24.48,1,1,40,43.86,-18.46,1,1,40,48.14,-13.37,1,1,40,42.26,-8.56,1,1,40,48.24,0.65,1,1,40,36.47,3.57,1,1,40,24.36,6.57,1,2,12,-25.41,-33.7,0.38,40,6.12,11.09,0.62,1,12,-7.14,-27.64,1,1,12,9.95,-5.88,1,1,12,15.5,5.62,1,1,12,18.15,20.42,1,1,12,7.44,15.92,1,1,37,7.37,-3.99,1,1,37,21.53,-4.77,1,1,37,34.15,0.07,1,1,12,-2.69,7.84,1,2,12,-5.77,22.63,0.33333,37,8.39,10.21,0.66667,1,37,17.18,12.48,1,2,38,0.56,8.2,0.78,39,-0.62,-8.37,0.22,2,38,12.52,7.24,0.78,39,10.43,-13.04,0.22,2,38,26.99,6.4,0.78,39,23.91,-18.38,0.22,1,39,2.35,4.75,1,1,39,19.72,0.81,1,1,39,35.23,1.19,1,3,12,-25.99,-18.53,0.23,39,4.88,14.43,0.2233,40,5.7,-4.08,0.5467,2,39,14.28,17.8,0.29,40,15.61,-5.3,0.71,2,39,29.6,21.29,0.29,40,30.87,-9.08,0.71],"hull":29}},"Layer 22":{"orangegirl/Layer 22":{"type":"mesh","uvs":[0.48596,0.01436,0.42787,0.24563,0.30144,0.44982,0.04516,0.66859,0.09642,0.71652,0,0.93737,0,0.9978,0.40395,1,0.71148,0.8332,0.93701,0.81028,0.86183,0.57483,1,0.27688,1,0,0.79349,0,0.49279,0,0.29802,0.85403,0.49279,0.5915,0.69782,0.24771],"triangles":[6,15,7,7,15,8,6,5,15,5,4,15,15,16,8,15,4,2,8,10,9,4,3,2,15,2,16,8,16,10,2,1,16,16,17,10,16,1,17,10,17,11,17,13,11,13,12,11,1,0,17,17,0,13,13,0,14],"vertices":[1,13,-15.65,-16.51,1,2,13,3.31,-13.53,0.66667,41,-19.8,-17.87,0.33333,3,13,21.18,-14.48,0.33333,41,-2.01,-15.89,0.33333,42,-25.19,-19.8,0.33333,2,41,19.79,-19.16,0.33333,42,-3.15,-20.29,0.66667,1,42,-1.35,-15.96,1,1,42,16.33,-9.75,1,1,42,20.43,-6.96,1,1,42,9.2,9.84,1,1,42,-10.76,14.84,1,2,41,9.89,25.84,0.33333,42,-18.66,23.11,0.66667,3,13,22.46,15.33,0.33333,41,-5.6,13.72,0.33333,42,-32.5,9.13,0.33333,2,13,-2.92,14.51,0.66667,41,-30.51,8.78,0.33333,1,13,-24.55,7.63,1,1,13,-21.43,-2.21,1,1,13,-16.87,-16.54,1,1,42,2.29,-1.28,1,1,41,4,-2.09,1,1,13,-0.62,-0.62,1],"hull":15}},"Layer 23":{"orangegirl/Layer 23":{"type":"mesh","uvs":[0.77855,0,0.55612,0.10278,0.34981,0.31202,0.09837,0.47328,0,0.59038,0.11771,0.64029,0.08225,0.82842,0.15317,0.93592,0.28534,0.87257,0.41428,0.97815,0.73987,1,0.84625,0.79578,0.86559,0.57502,1,0.35234,1,0.13733,1,0,0.53356,0.79386,0.30468,0.65181,0.50132,0.48479,0.75599,0.22756,0.25955,0.49823],"triangles":[9,16,10,10,16,11,9,8,16,7,6,8,8,6,17,8,17,16,17,6,5,11,16,12,17,18,16,5,20,17,4,3,5,16,18,12,17,20,18,5,3,20,18,2,1,20,2,18,20,3,2,18,19,12,12,19,13,18,1,19,19,14,13,19,0,14,19,1,0,0,15,14],"vertices":[1,14,-8.72,-8.48,1,2,14,5.26,-13.7,0.66667,46,-18.55,-14.28,0.33333,2,14,26.85,-13.21,0.33333,46,3.04,-14.29,0.66667,2,46,22.16,-18.53,0.66667,47,1.2,-18.81,0.33333,2,46,33.79,-17.76,0.33333,47,12.85,-19.14,0.66667,1,47,14.24,-11.61,1,1,47,30.21,-6.24,1,1,47,37.3,1.2,1,1,47,29.23,5.17,1,1,47,34.86,15.33,1,1,47,29.34,31.8,1,2,46,26.88,30.18,0.33333,47,10.48,29.24,0.66667,3,14,32.39,22.35,0.33333,46,9.41,21.13,0.33333,47,-7.76,21.87,0.33333,2,14,11.78,17.99,0.66667,46,-11.29,17.25,0.33333,1,14,-4.49,7.93,1,1,14,-14.89,1.51,1,1,47,17.32,14.14,1,1,47,10.99,-2.19,1,1,46,12.25,0.41,1,1,14,9.14,1.15,1,1,46,19.76,-10.04,1],"hull":16}},"Layer 24":{"orangegirl/Layer 24":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[-5.68,-10.22,3.45,23.57,35.3,14.97,26.18,-18.82],"hull":4}},"Layer 25":{"orangegirl/Layer 25":{"type":"mesh","uvs":[1,1,0.31335,1,0.15715,1,0,1,0,0,1,0,0.15715,0.21761,0.31115,0.22671],"triangles":[0,7,5,2,7,1,0,1,7,7,2,6,2,3,6,3,4,6,5,7,4,7,6,4],"vertices":[-19.33,-33.18,-8.59,6.6,-6.15,15.65,-3.69,24.75,24.3,17.19,8.67,-40.73,15.76,9.74,13.09,0.88],"hull":6}},"Layer 26":{"orangegirl/Layer 26":{"type":"mesh","uvs":[1,1,0.53537,1,0,1,0,0,0.52769,0,1,0],"triangles":[1,5,0,2,4,1,1,4,5,2,3,4],"vertices":[-23.75,-36.12,-17.58,-13.25,-10.46,13.12,17.54,5.56,10.52,-20.42,4.24,-43.68],"hull":6}},"Layer 27":{"orangegirl/Layer 27":{"type":"mesh","uvs":[0.41059,0.00477,0.15411,0.1904,0.2345,0.31327,0.06606,0.54072,0,0.7734,0,0.95379,0.14645,1,0.4795,1,0.72068,0.73941,1,0.41262,1,0.07275,0.82534,0.03666,0.64794,0,0.39385,0.20542,0.60601,0.07116,0.29107,0.63216,0.66966,0.25482],"triangles":[6,15,7,7,15,8,15,6,4,6,5,4,4,3,15,15,16,8,8,16,9,15,13,16,3,2,15,15,2,13,16,10,9,2,1,13,16,11,10,13,14,16,16,14,11,13,0,14,13,1,0,14,12,11,14,0,12],"vertices":[-11.14,-20.71,8.66,-27.5,15.97,-19.24,36.85,-20.12,55.76,-15.61,69.23,-9.5,69.29,-0.47,61.59,16.52,36.55,19.99,5.68,23.17,-19.7,11.65,-18.35,1.52,-16.99,-8.77,4.23,-14.77,-10.7,-8.49,38.48,-5.55,1.54,0.97],"hull":13}},"Layer 28":{"orangegirl/Layer 28":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[-10.16,19.31,-1.98,59.49,71.51,44.53,63.34,4.36],"hull":4}},"Layer 29":{"orangegirl/Layer 29":{"x":8.88,"y":1.71,"scaleX":1.245,"scaleY":1.245,"rotation":121.13,"width":55,"height":33}},"Layer 30":{"orangegirl/Layer 30":{"type":"mesh","uvs":[0.85119,1.5E-4,0.50674,4.9E-4,0.15203,0.30903,0,0.75224,0,1,0.09745,1,0.43511,1,0.79324,0.64205,1,0.30413,1,0,0.36349,0.56614],"triangles":[5,10,6,6,10,7,10,5,3,5,4,3,3,2,10,8,10,0,8,7,10,10,1,0,10,2,1,0,9,8],"vertices":[-10.62,-4.32,-0.63,-20.82,30.24,-25.39,64.23,-14.8,80.78,-4.82,77.96,-0.14,68.18,16.04,33.91,18.78,5.37,15.07,-14.94,2.8,41.29,-4.88],"hull":10}},"Layer 31":{"orangegirl/Layer 31":{"type":"mesh","uvs":[0.69501,0.40595,0.31735,0.60724,0,0.9149,0.08528,0.97043,0.13069,1,0.35208,0.99611,0.76663,0.77194,1,0.58323,1,0.38994,0.47796,0.69645],"triangles":[4,3,5,5,9,6,5,3,9,3,1,9,3,2,1,7,6,8,8,6,9,9,1,0,9,0,8],"vertices":[-9.07,-12.7,37.65,-19.9,95.64,-12.38,98.75,-0.86,100.4,5.27,88.45,20.67,36.73,28.26,-0.84,26.4,-26.98,7.47,41.42,0.29],"hull":9}},"Layer 32":{"orangegirl/Layer 32":{"type":"mesh","uvs":[0.00316,0.1807,0.01148,0.65625,0.42929,1,0.74564,0.97323,1,0.60342,1,0.09138,0.56657,0,0,0,0.5606,0.46525],"triangles":[2,8,3,2,1,8,3,8,4,1,0,8,8,5,4,8,6,5,8,0,6,0,7,6],"vertices":[2.86,50.12,21.88,61.86,28.84,81.64,22.55,89.67,3.46,87.69,-17.17,75.29,-13.7,61.19,-4.36,45.65,5.13,72.29],"hull":8}},"Layer 33":{"orangegirl/Layer 33":{"type":"mesh","uvs":[1,0.10432,1,0.3342,0.86923,0.43068,0.84775,0.61411,0.68602,0.65059,0.70197,0.71774,0.53807,0.75189,0.54699,0.82256,0.44571,0.83328,0.42883,0.94405,0.34597,1,0.09124,1,0,0.93691,0,0.75347,0.06822,0.6963,0.04674,0.64032,0.10812,0.57362,0.0805,0.51287,0.18178,0.4283,0.15109,0.30681,0.32909,0.22105,0.33523,0.10908,0.50095,0,0.85235,0,0.32909,0.68201,0.52551,0.65223,0.40121,0.57362,0.65133,0.50453,0.46259,0.41043,0.62218,0.26035,0.81399,0.10789,0.21578,0.84424],"triangles":[11,31,10,10,31,9,11,12,31,9,31,8,31,13,14,31,12,13,31,24,8,31,14,24,6,8,24,8,6,7,6,24,25,25,24,26,6,4,5,6,25,4,14,16,24,14,15,16,24,16,26,4,25,27,27,25,28,4,27,3,3,27,2,16,18,26,16,17,18,25,26,28,26,18,28,28,29,27,27,29,2,29,30,2,2,30,1,18,20,28,18,19,20,28,20,29,30,0,1,20,21,29,21,22,29,29,22,30,30,23,0,30,22,23],"vertices":[-30.84,12.1,-2.67,29.04,16.63,23.71,40.34,35.18,54.06,22.48,61.38,28.95,74.94,15.87,83.09,21.93,90.2,13.08,104.74,19.64,116.34,15.88,130.9,-8.35,128.39,-21.68,105.91,-35.2,95,-32.92,89.37,-39.09,77.68,-38.16,71.82,-45.27,55.66,-41.86,42.53,-53.74,21.83,-43.12,7.76,-50.79,-15.09,-43.06,-35.18,-9.63,78.33,-9.16,63.45,7.33,60.92,-10.28,38.15,8.42,37.41,-16.47,9.89,-12.34,-19.77,-5.33,104.69,-7.98],"hull":24}},"Layer 34":{"orangegirl/Layer 34":{"type":"mesh","uvs":[0.16558,0,0,0.28639,0,0.63468,0.22356,0.54854,0.52029,0.68711,0.66354,1,0.81361,1,1,0.8107,1,0.33133,0.70106,0.02423,0.39751,0,0.30201,0.15906,0.66695,0.31635,0.85795,0.6609],"triangles":[7,6,13,6,5,13,5,4,13,13,8,7,4,12,13,4,3,12,13,12,8,2,1,3,3,11,12,3,1,11,12,9,8,11,10,12,12,10,9,1,0,11,11,0,10],"vertices":[1.21,-27.19,18.48,-26.13,32.87,-15.71,21.96,-8.15,17.94,9.46,26.16,25.31,21.23,32.12,7.29,34.91,-12.51,20.57,-15.38,-2.17,-6.41,-16.67,3.3,-16.24,-2.19,5.02,5.77,23.99],"hull":11}},"Layer 35":{"orangegirl/Layer 35":{"type":"mesh","uvs":[0,0.83001,0.21789,0.40926,0.40889,0.09369,0.5912,0,0.86323,0.02172,1,0.12137,1,0.40095,1,0.76634,0.86613,0.97395,0.67223,1,0.37705,0.92966,0.19763,1,0,1,0.12239,0.90475,0.33364,0.73313,0.57963,0.40095,0.60567,0.77465,0.79088,0.51998],"triangles":[10,16,9,9,16,8,12,13,11,11,13,10,12,0,13,8,16,7,13,14,10,10,14,16,13,0,14,0,1,14,14,15,16,16,17,7,16,15,17,17,6,7,14,1,15,17,15,6,1,2,15,15,4,6,4,5,6,15,3,4,15,2,3],"vertices":[67.08,-22.24,34.68,-22.84,9.55,-21.68,-1.73,-13.97,-8.66,2.66,-6.72,13.84,10.41,22.72,32.79,34.32,49.58,33.08,57.06,22.54,61.72,3.01,71.48,-5.26,77.49,-16.84,67.93,-12.7,51,-5.77,23.18,-1.91,45.28,11.48,24.05,14.25],"hull":13}},"Layer 36":{"orangegirl/Layer 36":{"type":"mesh","uvs":[0.74021,0.5485,0.42537,0.79568,0.25116,1,0,1,0,0.75261,0.21758,0.32567,0.3771,0.07288,0.69823,0.00921,0.9438,0.08224,0.98177,0.20369,1,0.262,1,0.58408,0.28685,0.57472,0.39809,0.39495,0.42327,0.27324,0.66675,0.12343,0.83676,0.1871,0.69193,0.44738,0.92491,0.3987,0.49044,0.54663,0.5633,0.34071,0.68884,0.24621],"triangles":[15,6,7,16,15,7,8,16,7,16,8,9,21,15,16,14,6,15,20,14,15,5,6,14,21,20,15,13,5,14,13,14,20,10,18,16,10,16,9,18,17,21,18,21,16,20,21,17,19,13,20,19,20,17,0,17,18,19,17,0,12,5,13,12,13,19,18,10,11,0,18,11,4,5,12,1,12,19,1,19,0,3,12,2,12,3,4,1,2,12],"vertices":[19.25,31.97,55.87,21.23,81.96,18.98,94.17,-0.34,72.85,-13.83,25.46,-20.37,-4.09,-21.89,-25.2,-0.66,-30.85,22.21,-22.23,31.75,-18.09,36.33,9.68,53.89,43.56,-1.47,22.65,-2.71,10.93,-7.41,-13.82,3.15,-16.6,19.69,12.88,22.75,-2.65,38.01,31.23,12.66,9.94,7.04,-4.31,11.54],"hull":12}},"Layer 37":{"orangegirl/Layer 37":{"type":"mesh","uvs":[0,0.22365,0.20224,0.46288,0.23399,0.77742,0.29749,0.94577,0.52085,0.94282,0.85538,0.93839,1,0.56182,1,0.18377,0.74653,0,0.23399,0,0,0.08779,0.46985,0.21036,0.5651,0.51456,0.53335,0.76266],"triangles":[4,3,13,4,13,5,13,3,2,5,13,6,6,13,12,13,2,12,12,2,1,12,7,6,1,11,12,7,11,8,7,12,11,1,9,11,1,0,9,0,10,9,11,9,8],"vertices":[15.92,-15.15,58.21,-9.38,112.07,-14.78,141.24,-15.09,142.39,-2.63,144.12,16.04,81,32.65,16.54,41.26,-16.67,31.38,-20.47,2.93,-7.24,-12.05,17.14,11.23,69.71,9.59,111.77,2.17],"hull":11}},"Layer 38":{"orangegirl/Layer 38":{"type":"mesh","uvs":[0,0.88159,0.29577,1,0.54309,1,0.98425,0.84274,1,0.53197,0.75699,0,0.48962,0,0.22225,0,0.12867,0.36761,0,0.56782,0.23562,0.73218,0.50967,0.46622],"triangles":[3,2,11,0,10,1,11,2,10,2,1,10,0,9,10,3,11,4,9,8,10,10,8,11,6,8,7,8,6,11,11,5,4,11,6,5],"vertices":[60.81,-16.13,70.35,-4.43,69.91,4.95,55.79,21.08,29.37,20.46,-15.37,9.15,-14.9,-1,-14.43,-11.15,16.95,-13.26,34.17,-17.36,47.71,-7.77,24.65,1.59],"hull":10}},"Layer 39":{"orangegirl/Layer 39":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[18.76,19.27,12.54,-27.32,-38.01,-20.56,-31.79,26.03],"hull":4}},"Layer 40":{"orangegirl/Layer 40":{"type":"mesh","uvs":[1,1,0.35851,1,0,1,0,0,0.37298,0,1,0],"triangles":[1,4,0,4,5,0,4,1,3,1,2,3],"vertices":[18.76,19.27,15.19,-7.43,13.2,-22.36,-25.46,-17.19,-23.38,-1.66,-19.89,24.44],"hull":6}},"Layer 41":{"orangegirl/Layer 41":{"type":"mesh","uvs":[0,0.3658,0.29578,0.76147,0.38952,0.91209,0.54373,1,0.75842,1,1,0.88401,1,0.64915,1,0.38749,1,0.08244,0.66771,0,0.45302,0,0.20507,0,0,0.06968,0.25345,0.22795,0.51349,0.59299,0.61026,0.86231,0.53164,0.06585,0.66771,0.07606,0.82797,0.22667,0.77354,0.30836,0.77656,0.53428,0.51652,0.19093,0.78261,0.7602,0.32113,0.1455,0.40923,0.30429],"triangles":[3,15,4,4,22,5,4,15,22,3,2,15,15,2,14,22,6,5,2,1,14,15,14,22,0,13,1,1,13,14,14,20,22,22,20,6,20,7,6,13,24,14,14,19,20,14,24,19,20,19,7,19,18,7,18,8,7,0,12,13,24,21,19,19,21,17,21,16,17,19,17,18,13,23,24,24,23,21,12,11,13,13,11,23,18,17,8,21,23,16,23,10,16,23,11,10,16,9,17,8,17,9,16,10,9],"vertices":[21.59,-37.26,103.14,-24.35,133.94,-21,153.16,-10.78,155.83,7.06,136.01,30.54,89.79,37.46,38.29,45.17,-21.74,54.16,-42.1,28.98,-44.77,11.15,-47.86,-9.45,-36.69,-28.54,-2.39,-12.15,72.69,-1.3,126.89,-1.2,-30.83,15.74,-27.13,26.74,4.5,35.62,19.9,28.69,64.4,22.28,-6.4,10.8,108.94,16.13,-17.78,-4.1,14.57,-1.46],"hull":13}},"Layer 42":{"orangegirl/Layer 42":{"type":"mesh","uvs":[0.16315,0.99898,0.44371,0.99724,0.79688,0.67428,1,0.36913,0.94653,0,0.61132,0,0.12047,0,0.10252,0.35132,0,0.77228,0,1,0.46167,0.52727],"triangles":[9,8,0,1,0,10,1,10,2,10,0,8,8,7,10,2,10,3,3,5,4,5,3,10,10,7,5,5,7,6],"vertices":[116.01,-0.96,113.69,12.3,69.89,22.53,29.48,26,-17.15,16.02,-14.63,0.13,-10.95,-23.14,33.95,-16.9,88.35,-13.27,117.37,-8.68,53.67,3.67],"hull":10}},"Layer 43":{"orangegirl/Layer 43":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[17.44,12.64,18.54,-7.33,-20.4,-9.48,-21.5,10.49],"hull":4}},"Layer 44":{"orangegirl/Layer 44":{"type":"mesh","uvs":[0.21904,1,0.69007,1,0.91616,0.73145,1,0.51546,1,0.07159,0.65709,0,0.41216,0,0.04476,0,0,0.20832,0,0.69974,0,0.803,0,1,0.14368,0.88799,0.30854,0.67597,0.10155,0.8105],"triangles":[5,4,3,6,8,7,13,8,6,9,8,13,5,13,6,14,10,9,5,3,13,2,13,3,13,14,9,12,14,13,12,11,10,12,10,14,0,12,13,11,12,0,1,13,2,0,13,1],"vertices":[115.28,-9.74,113.7,18.95,74.06,30.58,42.51,33.97,-21.76,30.43,-30.97,8.97,-30.15,-5.95,-28.92,-28.33,1.39,-29.39,72.54,-25.47,87.49,-24.65,116.01,-23.08,99.31,-15.22,68.06,-6.87,88.24,-18.4],"hull":12}},"Layer 45":{"orangegirl/Layer 45":{"type":"mesh","uvs":[0.73405,0.00381,0.55487,0.00802,0.45565,0.28794,0.30484,0.42272,0.13418,0.51602,0,0.65598,0,0.98774,0.06192,0.99033,0.29293,1,0.64218,1,1,0.8737,1,0.37606,0.89618,0,0.12228,0.72337,0.44374,0.54712,0.70568,0.37088],"triangles":[15,0,12,15,1,0,2,1,15,7,13,8,9,8,14,8,13,14,7,6,13,6,5,13,9,14,15,14,4,3,14,13,4,13,5,4,14,3,2,14,2,15,15,10,9,15,11,10,11,15,12],"vertices":[1,29,122.43,-4.39,1,1,29,124.43,-15.68,1,3,31,12.06,-18.5,0.33333,36,1.64,-24.95,0.33333,29,138.97,-19.81,0.33333,2,31,23.48,-21.03,0.33333,36,12.45,-20.47,0.66667,1,36,24.08,-18.24,1,1,36,33.89,-13.3,1,1,36,37.24,2.61,1,1,36,33.38,3.55,1,1,36,19.01,7.06,1,2,31,29.38,14.06,0.33333,36,-2.86,11.66,0.66667,2,31,9.22,26.55,0.66667,36,-26.54,10.31,0.33333,1,31,-8.59,9.89,1,1,29,120.63,5.83,1,1,36,26.91,-8.46,1,2,31,21.86,-10.38,0.33333,36,5,-12.67,0.66667,3,31,4.1,-4.04,0.33333,36,-13.18,-17.68,0.33333,29,140.48,-3.37,0.33333],"hull":13}},"Layer 46":{"orangegirl/Layer 46":{"type":"mesh","uvs":[1,1,0.75544,1,0.36729,1,0,1,0,0,1,0,0.36283,0.29905,0.74206,0.31786],"triangles":[6,4,5,7,6,5,3,4,6,2,6,7,3,6,2,0,1,7,2,7,1,0,7,5],"vertices":[9.01,25.17,10.5,15.75,12.87,0.8,15.11,-13.35,-21.44,-19.14,-27.54,19.38,-12.72,-3.43,-14.35,11.28],"hull":6}},"Layer 47":{"orangegirl/Layer 47":{"x":-9.9,"y":3.95,"rotation":99,"width":32,"height":31}},"Layer 48":{"orangegirl/Layer 48":{"type":"mesh","uvs":[0.28555,0.17551,0.15605,0.31275,0,0.51003,0,0.73877,0.17085,0.90746,0.52976,0.94463,0.79987,0.83598,0.92567,0.58437,1,0.35563,1,0,0.61116,0,0.17825,0.60724,0.42986,0.7645,0.44096,0.40138,0.64816,0.53862,0.74807,0.24413],"triangles":[15,9,8,15,10,9,8,7,15,13,10,15,4,12,5,5,12,6,4,11,12,4,3,11,12,14,6,3,2,11,6,14,7,12,13,14,12,11,13,2,1,11,7,14,15,11,1,13,14,13,15,1,0,13,13,0,10],"vertices":[1,34,1.15,-17.91,1,2,34,11.88,-21.14,0.66667,48,-9.34,-21.99,0.33333,2,34,26.81,-24.33,0.33333,48,5.84,-23.53,0.66667,1,48,19.45,-17,1,1,48,25.72,-4.32,1,1,48,20,13.24,1,1,48,7.58,22.55,1,2,34,15.78,21.84,0.66667,48,-10.17,21.15,0.33333,1,33,-14.61,-13.99,1,1,33,8.39,-18.68,1,1,33,12.35,0.75,1,1,48,7.69,-12.56,1,1,48,11.49,3.5,1,1,34,12.58,-5.49,1,1,48,-6.77,7.08,1,2,34,-2.4,5.84,0.46,33,-4.83,-2.87,0.54],"hull":11}},"Layer 49":{"orangegirl/Layer 49":{"type":"mesh","uvs":[0.01083,0.15096,0.11456,0.04188,0.28542,0,0.59203,0,0.84221,0.09707,0.97035,0.2377,1,0.41906,1,0.59255,0.91848,0.70031,0.92764,0.79231,0.83916,0.745,0.80713,0.79494,0.80713,0.88562,0.74611,0.85014,0.69729,0.90534,0.68356,0.97105,0.61644,0.95659,0.61492,1,0.54932,0.96579,0.53559,1,0.48525,0.99996,0.43796,0.92242,0.3922,0.8094,0.39372,0.59517,0.21829,0.41118,0.02914,0.32707,0,0.27581,0.49288,0.93162,0.49898,0.78574,0.56763,0.55969,0.60271,0.82385,0.66221,0.67271,0.69119,0.53209,0.78882,0.67929,0.81628,0.50581,0.76136,0.39672,0.90933,0.56363,0.92001,0.44798,0.89255,0.34152],"triangles":[17,18,16,18,19,27,19,20,27,20,21,27,15,16,14,16,18,30,18,27,30,16,30,14,27,21,28,14,30,13,13,11,12,22,23,28,27,28,30,21,22,28,30,31,13,11,31,33,11,13,31,30,28,31,11,33,10,10,8,9,28,29,31,10,33,8,33,36,8,31,32,33,33,32,34,31,29,32,8,36,7,36,34,37,32,29,35,32,35,34,34,35,37,35,38,37,33,34,36,36,37,7,35,29,3,37,38,6,35,4,38,28,23,29,23,24,29,37,6,7,29,24,3,3,24,2,38,5,6,24,0,1,24,1,2,35,3,4,38,4,5,26,0,25,24,25,0],"vertices":[1,35,23.4,71.59,1,1,35,34.06,56.68,1,1,35,34.33,36.78,1,1,35,25.38,3.63,1,1,35,5.89,-20.13,1,1,35,-15.5,-29.23,1,1,35,-39.12,-26.29,1,2,35,-60.9,-20.41,0.66667,44,-4.06,29.18,0.33333,3,35,-72.04,-7.94,0.25,43,45.23,21.8,0.25,44,11.3,22.58,0.5,1,44,22.91,25.64,1,1,44,18.55,14.82,1,2,44,25.56,12.4,0.75,45,-6.86,12.46,0.25,2,44,37.17,14.42,0.33333,45,4.54,15.47,0.66667,1,45,1.83,7.69,1,1,45,10.16,4.23,1,1,45,18.81,4.93,1,2,44,49.92,-5.04,0.25,45,18.92,-2.82,0.75,1,45,24.42,-1.54,1,1,45,21.99,-9.78,1,1,45,26.69,-10.13,1,1,45,28.12,-15.58,1,2,44,48.96,-25.5,0.33333,45,19.73,-23.28,0.66667,1,44,35.36,-33.06,1,1,35,-43.53,45.24,1,1,35,-15.32,57.97,1,1,35,0.76,75.58,1,1,35,8.04,76.99,1,2,44,49.09,-19.24,0.33333,45,19.31,-17.03,0.66667,3,43,62.1,-23.44,0.33333,44,30.29,-21.81,0.33333,45,0.8,-21.21,0.33333,2,43,31.99,-19.47,0.5,44,0.02,-19.26,0.5,2,44,33.18,-9.51,0.66667,45,2.63,-8.71,0.33333,2,43,45.25,-7.13,0.33333,44,12.68,-6.31,0.66667,2,43,26.7,-6.18,0.5,44,-5.89,-6.24,0.5,2,43,44.33,7.05,0.33333,44,11.1,7.81,0.66667,2,43,21.57,7.29,0.66667,44,-11.65,6.98,0.33333,1,43,8.26,-0.58,1,2,43,27.73,18.57,0.66667,44,-6.03,18.53,0.33333,1,43,12.66,17.88,1,1,43,-0.69,13.11,1],"hull":27}}}},"animations":{"animation":{"bones":{"bone":{"rotate":[{"time":0,"angle":-3.29,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-8.93,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-3.29}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":5.12,"y":-17.72,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0,"y":0}]},"Layer 36":{"rotate":[{"time":0,"angle":2.38,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":15.54,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":2.38}],"translate":[{"time":0,"x":-0.43,"y":7.36,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":-8.14,"y":-1.62,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":-0.43,"y":7.36}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.961,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 31":{"rotate":[{"time":0,"angle":8.81,"curve":[0.32,0.29,0.757,1]},{"time":0.5333,"angle":-3.95,"curve":[0.25,0,0.75,1]},{"time":1.2,"angle":10.72,"curve":[0.284,0,0.625,0.38]},{"time":1.3333,"angle":8.81}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.946,"y":1.032,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 27":{"rotate":[{"time":0,"angle":6.86,"curve":[0.306,0.23,0.756,1]},{"time":0.5667,"angle":19.05,"curve":[0.25,0,0.75,1]},{"time":1.2333,"angle":5.67,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"angle":6.86}],"translate":[{"time":0,"x":1.93,"y":-4.54,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.32,"y":7.98,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.93,"y":-4.54}],"scale":[{"time":0,"x":1.082,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.072,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.082,"y":1}]},"Layer 30":{"rotate":[{"time":0,"angle":-4.78,"curve":[0.345,0.37,0.757,1]},{"time":0.4667,"angle":-6.98,"curve":[0.25,0,0.75,1]},{"time":1,"angle":3.49,"curve":[0.269,0,0.618,0.42]},{"time":1.3333,"angle":-4.78}],"scale":[{"time":0,"x":1.067,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.921,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.067,"y":1}]},"Layer 14":{"rotate":[{"time":0,"angle":-23.11,"curve":[0.25,0,0.75,1]},{"time":0.7,"angle":-9.69,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-23.11}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":4.72,"y":-0.08,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0,"y":0}]},"Layer 41":{"rotate":[{"time":0,"angle":8.96,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":4.72,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":8.96}],"translate":[{"time":0,"x":-5.63,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":6.07,"y":0.19,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":-5.63,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.943,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 44":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-4.91,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":-3.37,"y":-0.1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.959,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 37":{"rotate":[{"time":0,"angle":3.73,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":18.56,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":3.73}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.999,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 42":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":17.71,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.983,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 43":{"translate":[{"time":0,"x":-0.08,"y":1.47,"curve":[0.25,0,0.625,0.5]},{"time":0.6667,"x":-0.02,"y":0.21,"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"x":-0.08,"y":1.47}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.625,0.5]},{"time":0.6667,"x":1,"y":1.165,"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"bone2":{"rotate":[{"time":0,"angle":-8.04,"curve":[0.382,0.57,0.737,1]},{"time":0.2333,"angle":-10.36,"curve":[0.25,0,0.75,1]},{"time":0.9,"angle":-2.75,"curve":[0.244,0,0.646,0.59]},{"time":1.3333,"angle":-8.04}],"translate":[{"time":0,"x":5.72,"y":-6.44,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":6.24,"y":-5.26,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":5.72,"y":-6.44}]},"Layer 38":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-4.77,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.963,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"Layer 45":{"rotate":[{"time":0,"angle":4.52,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-3.42,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":4.52}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.017,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"bone3":{"rotate":[{"time":0,"angle":3.34,"curve":[0.37,0.47,0.753,1]},{"time":0.3667,"angle":4.13,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":2.74,"curve":[0.253,0,0.621,0.48]},{"time":1.3333,"angle":3.34}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":-1.11,"y":-1.7,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0,"y":0}]},"Layer 24":{"rotate":[{"time":0,"angle":12.27,"curve":[0.25,0,0.75,1]},{"time":0.4667,"angle":11.62,"curve":[0.25,0,0.75,1]},{"time":1.1333,"angle":12.02,"curve":[0.269,0,0.618,0.42]},{"time":1.3333,"angle":12.27}],"translate":[{"time":0,"x":-2.52,"y":7.99,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":-2.18,"y":10.17,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":-2.52,"y":7.99}]},"Layer 48":{"rotate":[{"time":0,"angle":-16.95},{"time":0.2667,"angle":-6.82,"curve":[0.25,0,0.625,0.5]},{"time":0.7667,"angle":0.08,"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"angle":-16.95}],"scale":[{"time":0,"x":0.918,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.918,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0.918,"y":1}]},"bone4":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.625,0.5]},{"time":0.6667,"angle":4.66,"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.625,0.5]},{"time":0.6667,"x":-1.95,"y":2.02,"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"x":0,"y":0}]},"Layer 15":{"rotate":[{"time":0,"angle":23.52,"curve":[0.289,0.17,0.755,1]},{"time":0.6,"angle":18.31,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":23.75,"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"angle":23.52}]},"Layer 23":{"rotate":[{"time":0,"angle":-4.94,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":0.75,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-4.94}],"translate":[{"time":0,"x":1.1,"y":-5.08,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.49,"y":2.01,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.1,"y":-5.08}]},"bone16":{"rotate":[{"time":0,"angle":-8.61,"curve":[0.382,0.58,0.731,1]},{"time":0.2,"angle":-13.11,"curve":[0.25,0,0.625,0.5]},{"time":0.8667,"angle":5.46,"curve":[0.243,0,0.655,0.63]},{"time":1.3333,"angle":-8.61}],"scale":[{"time":0,"x":1.035,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.036,"y":1,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":1.035,"y":1}]},"Layer 16":{"translate":[{"time":0,"x":3.17,"y":2.91,"curve":[0.289,0.17,0.755,1]},{"time":0.6,"x":-2.86,"y":-4.21,"curve":[0.25,0,0.75,1]},{"time":1.2667,"x":3.44,"y":3.22,"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"x":3.17,"y":2.91}]},"Layer 17":{"translate":[{"time":0,"x":1.34,"y":2.16,"curve":[0.289,0.17,0.755,1]},{"time":0.6,"x":-2.35,"y":-1.15,"curve":[0.25,0,0.75,1]},{"time":1.2667,"x":1.5,"y":2.31,"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"x":1.34,"y":2.16}]},"Layer 18":{"rotate":[{"time":0,"angle":-1.61,"curve":[0.289,0.17,0.755,1]},{"time":0.6,"angle":-4.54,"curve":[0.25,0,0.75,1]},{"time":1.2667,"angle":-1.48,"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"angle":-1.61}],"translate":[{"time":0,"x":4.57,"y":3.99,"curve":[0.289,0.17,0.755,1]},{"time":0.6,"x":-2.09,"y":-1.45,"curve":[0.25,0,0.75,1]},{"time":1.2667,"x":4.87,"y":4.23,"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"x":4.57,"y":3.99}]},"Layer 19":{"rotate":[{"time":0,"angle":-4.78,"curve":[0.306,0.23,0.756,1]},{"time":0.5667,"angle":-5.99,"curve":[0.25,0,0.75,1]},{"time":1.2333,"angle":-4.67,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"angle":-4.78}],"translate":[{"time":0,"x":1.29,"y":0.73,"curve":[0.306,0.23,0.756,1]},{"time":0.5667,"x":-1.47,"y":-2.21,"curve":[0.25,0,0.75,1]},{"time":1.2333,"x":1.54,"y":1,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"x":1.29,"y":0.73}],"scale":[{"time":0,"x":1.067,"y":0.839,"curve":[0.306,0.23,0.756,1]},{"time":0.5667,"x":1.067,"y":1.109,"curve":[0.25,0,0.75,1]},{"time":1.2333,"x":1.067,"y":0.815,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"x":1.067,"y":0.839}]},"Layer 20":{"translate":[{"time":0,"x":2.14,"y":4.23,"curve":[0.306,0.23,0.756,1]},{"time":0.5667,"x":-2.8,"y":-2.33,"curve":[0.25,0,0.75,1]},{"time":1.2333,"x":2.47,"y":4.77,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"x":2.14,"y":4.23}]},"Layer 21":{"translate":[{"time":0,"x":2.6,"y":2.14,"curve":[0.369,0.63,0.706,1]},{"time":0.1,"x":2.71,"y":2.38,"curve":[0.25,0,0.75,1]},{"time":0.7667,"x":1.35,"y":-0.56,"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"x":2.6,"y":2.14}]},"Layer 22":{"rotate":[{"time":0,"angle":-5.51,"curve":[0.369,0.63,0.706,1]},{"time":0.1,"angle":-6.05,"curve":[0.375,0.5,0.75,1]},{"time":0.7667,"angle":0.53,"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"angle":-5.51}],"translate":[{"time":0,"x":4.7,"y":7.63,"curve":[0.369,0.63,0.706,1]},{"time":0.1,"x":4.36,"y":8.55,"curve":[0.369,0.63,0.706,1]},{"time":0.7667,"x":0.47,"y":-1.63,"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"x":4.7,"y":7.63}],"scale":[{"time":0,"x":1,"y":1.127}]},"Layer 34":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-9.12,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":0}]},"Layer 35":{"rotate":[{"time":0,"angle":-2.31,"curve":[0.295,0.2,0.647,0.6]},{"time":0.4667,"angle":-14.3,"curve":[0.25,0,0.75,1]},{"time":1.1333,"angle":0,"curve":[0.294,0,0.631,0.37]},{"time":1.3333,"angle":-2.31}]},"bone11":{"rotate":[{"time":0,"angle":-2.13,"curve":[0.31,0.26,0.655,0.63]},{"time":0.3667,"angle":1.75,"curve":[0.25,0,0.75,1]},{"time":1.0333,"angle":-3.87,"curve":[0.28,0,0.623,0.39]},{"time":1.3333,"angle":-2.13}],"translate":[{"time":0,"x":0.12,"y":5.45,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":-0.38,"y":-0.72,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0.12,"y":5.45}]},"bone14":{"rotate":[{"time":0,"angle":2.82,"curve":[0.382,0.58,0.731,1]},{"time":0.2,"angle":-3.37,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":22.19,"curve":[0.243,0,0.655,0.63]},{"time":1.3333,"angle":2.82}]},"Layer 33":{"translate":[{"time":0,"x":-4.52,"y":8.38}]},"bone12":{"rotate":[{"time":0,"angle":-3.95,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":25.25,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-3.95}]},"bone15":{"rotate":[{"time":0,"angle":-4.7,"curve":[0.379,0.52,0.747,1]},{"time":0.3,"angle":-20.33,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":15.68,"curve":[0.247,0,0.63,0.53]},{"time":1.3333,"angle":-4.7}]},"bone5":{"rotate":[{"time":0,"angle":-3.34,"curve":[0.375,0.5,0.75,1]},{"time":0.4,"angle":6.09,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":-10.87,"curve":[0.25,0,0.625,0.5]},{"time":1.3333,"angle":-3.34}],"translate":[{"time":0,"x":-2.14,"y":-3.26,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0.01,"y":2.36,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":-2.14,"y":-3.26}]},"bone6":{"rotate":[{"time":0,"angle":-9.27,"curve":[0.32,0.29,0.757,1]},{"time":0.5333,"angle":11.66,"curve":[0.294,0,0.631,0.37]},{"time":1.2,"angle":-12.4,"curve":[0.284,0,0.625,0.38]},{"time":1.3333,"angle":-9.27}],"translate":[{"time":0,"x":3.31,"y":2.98,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":5.46,"y":8.61,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":3.31,"y":2.98}]},"bone7":{"rotate":[{"time":0,"angle":0.28,"curve":[0.379,0.52,0.747,1]},{"time":0.3,"angle":4.51,"curve":[0.25,0,0.625,0.5]},{"time":0.9667,"angle":-5.24,"curve":[0.247,0,0.63,0.53]},{"time":1.3333,"angle":0.28}]},"bone8":{"rotate":[{"time":0,"angle":354.93,"curve":[0.271,0.09,0.753,1]},{"time":0.6333,"angle":4.51,"curve":[0.25,0,0.625,0.5]},{"time":1.3,"angle":354.76,"curve":[0.318,0,0.652,0.34]},{"time":1.3333,"angle":354.93}],"translate":[{"time":0,"x":-4.31,"y":-4.88}]},"bone9":{"rotate":[{"time":0,"angle":-1.31,"curve":[0.379,0.6,0.724,1]},{"time":0.1667,"angle":-5.55,"curve":[0.333,0.33,0.758,1]},{"time":0.8333,"angle":17.45,"curve":[0.242,0,0.667,0.67]},{"time":1.3333,"angle":-1.31}]},"bone10":{"rotate":[{"time":0,"angle":-10.84,"curve":[0.372,0.62,0.711,1]},{"time":0.2333,"angle":-14.88,"curve":[0.25,0,0.75,1]},{"time":0.9,"angle":4.71,"curve":[0.35,0.39,0.7,0.78]},{"time":1.3333,"angle":-10.84}]},"bone13":{"rotate":[{"time":0,"angle":-2.93,"curve":[0.369,0.63,0.706,1]},{"time":0.1,"angle":-3.87,"curve":[0.25,0,0.75,1]},{"time":0.7667,"angle":7.52,"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"angle":-2.93}]},"bone17":{"rotate":[{"time":0,"angle":11.45,"curve":[0.34,0.66,0.674,1]},{"time":0.2333,"angle":0.29,"curve":[0.25,0,0.75,1]},{"time":0.7667,"angle":3.49,"curve":[0.362,0.55,0.699,0.91]},{"time":1.3333,"angle":11.45}],"translate":[{"time":0,"x":-1.26,"y":6.76,"curve":[0.34,0.66,0.674,1]},{"time":0.2333,"x":-1.93,"y":6.82,"curve":[0.25,0,0.75,1]},{"time":0.7667,"x":-3.49,"y":-4.86,"curve":[0.362,0.55,0.699,0.91]},{"time":1.3333,"x":-1.26,"y":6.76}]}},"deform":{"default":{"Layer 14":{"orangegirl/Layer 14":[{"time":0,"offset":10,"vertices":[0.17511,-2.19607,0.52448,-2.14304,-4.80162,-6.29134,0.95139,-7.86011,2.22595,-7.59804,-0.93208,-6.63786,4.04083,-5.33596,-0.20708,1.32806,1.10863,-0.86313,-3.25075,-4.47073,-3.25075,-4.47073,-3.25075,-4.47073,-3.25075,-4.47073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.19748,-0.0247,-0.138,-0.14343,0,0,0,0,6.4454,-0.05251,6.32904,1.21796,5.03868,-3.78267,6.3074,-0.19594,6.21939,1.05187,1.82692,5.58286,-1.72516,5.61504,-5.66851,-4.87488,1.47644,7.32932,-1.41998,-1.06506,0.46576,1.71289,-0.70397,-0.7038,0,0,0,0,-0.19748,-0.0247,-0.138,-0.14343,-0.10965,-0.16609],"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":8,"vertices":[3.21011,-7.31416,0.30215,-10.24179,2.29907,-9.99156,-7.47295,-11.53435,1.6431,-13.70501,4.10159,-13.1768,-2.4946,-9.70241,4.44513,-8.75349,3.99944,3.22092,-1.83356,-4.41431,3.98488,4.11566,0,0,0,0,0,0,0,0,-3.04341,-0.52341,-3.04341,-0.52341,2.50107,1.81155,0,0,0,0,-1.55475,-3.03104,0.19421,-3.40125,-1.75223,-3.05574,0.05621,-3.54467,3.97983,-2.53079,4.35513,-1.81149,-2.37274,-23.6548,2.53244,-23.63902,-11.65488,-15.18803,-1.57919,-18.89253,2.32803,-18.81264,-8.59618,-7.26733,-3.55481,-11.34726,9.85075,1.41199,-8.55498,-6.25031,4.59882,1.33939,-3.53877,-3.22513,7.99583,1.88739,0,0,0,0,-11.00572,-3.26353,-7.83453,-7.96437,-6.01007,-9.47874],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":10,"vertices":[0.17511,-2.19607,0.52448,-2.14304,-4.80162,-6.29134,0.95139,-7.86011,2.22595,-7.59804,-0.93208,-6.63786,4.04083,-5.33596,-0.20708,1.32806,1.10863,-0.86313,-3.25075,-4.47073,-3.25075,-4.47073,-3.25075,-4.47073,-3.25075,-4.47073,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.19748,-0.0247,-0.138,-0.14343,0,0,0,0,6.4454,-0.05251,6.32904,1.21796,5.03868,-3.78267,6.3074,-0.19594,6.21939,1.05187,1.82692,5.58286,-1.72516,5.61504,-5.66851,-4.87488,1.47644,7.32932,-1.41998,-1.06506,0.46576,1.71289,-0.70397,-0.7038,0,0,0,0,-0.19748,-0.0247,-0.138,-0.14343,-0.10965,-0.16609]}]},"Layer 15":{"orangegirl/Layer 15":[{"time":0,"vertices":[0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,0.20074,0.81644,2.03446,3.1747,1.51574,3.9942,3.08138,1.8079,3.81697,3.18871,3.91774,3.2642,2.97876,2.53714,0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,1.33739,1.54935,1.29132,1.50873,-1.04889,1.3038,4.44944,4.65007,3.6851,4.91736,1.47034,3.96105,2.74986,4.77454,0.99611,0.7708,0.05713,0.04374,0.05713,0.04374],"curve":[0.289,0.17,0.755,1]},{"time":0.6,"vertices":[0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,-1.83365,-1.3646,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937,-0.92941,-0.72367,-2.01215,-1.67831,-3.64355,-2.92789,-3.64355,-2.92789,-3.64355,-2.92789,-0.92941,-0.72367,-0.92941,-0.72367,0.53452,0.40937,0.53452,0.40937,0.53452,0.40937],"curve":[0.25,0,0.75,1]},{"time":1.2667,"vertices":[0.03591,0.02749,0.03591,0.02749,0.03591,0.02749,0.03591,0.02749,0.18591,0.83453,2.10113,3.2976,1.55935,4.15352,3.19457,1.87005,4.06811,3.39108,4.06811,3.39108,3.0874,2.63171,0.03591,0.02749,0.03591,0.02749,0.03591,0.02749,1.43814,1.65037,1.43814,1.65037,-0.93357,1.49187,4.80913,4.98687,4.01082,5.26604,1.57699,4.16926,2.91339,5.0189,1.01663,0.78686,0.03591,0.02749,0.03591,0.02749],"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"vertices":[0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,0.20074,0.81644,2.03446,3.1747,1.51574,3.9942,3.08138,1.8079,3.81697,3.18871,3.91774,3.2642,2.97876,2.53714,0.05713,0.04374,0.05713,0.04374,0.05713,0.04374,1.33739,1.54935,1.29132,1.50873,-1.04889,1.3038,4.44944,4.65007,3.6851,4.91736,1.47034,3.96105,2.74986,4.77454,0.99611,0.7708,0.05713,0.04374,0.05713,0.04374]}]},"Layer 16":{"orangegirl/Layer 16":[{"time":0,"vertices":[0.9121,0.82552,0.92126,0.81582,2.52534,1.22618,2.52295,1.20771,2.51262,1.20082,2.49355,1.20391,0.16291,-0.85973,0.16623,-0.83927,0.16916,-0.82127,0.79329,0.15807,0.91538,0.79434],"curve":[0.289,0.17,0.755,1]},{"time":0.6,"vertices":[1.2908,-0.87923,1.5062,-1.1071,1.76471,-1.35269,1.70865,-1.78668,1.46585,-1.94864,1.01779,-1.87585,0.81393,-1.7321,0.89212,-1.25122,0.96082,-0.82834,1.12457,-1.37596,1.36801,-1.61189],"curve":[0.25,0,0.75,1]},{"time":1.2667,"vertices":[0.89526,0.90129,0.89526,0.90129,2.55914,1.34079,2.55914,1.34079,2.55914,1.34079,2.55914,1.34079,0.13397,-0.82096,0.13397,-0.82096,0.13397,-0.82096,0.77856,0.22625,0.89526,0.90129],"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"vertices":[0.9121,0.82552,0.92126,0.81582,2.52534,1.22618,2.52295,1.20771,2.51262,1.20082,2.49355,1.20391,0.16291,-0.85973,0.16623,-0.83927,0.16916,-0.82127,0.79329,0.15807,0.91538,0.79434]}]},"Layer 17":{"orangegirl/Layer 17":[{"time":0,"vertices":[-0.02612,-0.0221,2.51111,3.61754,-0.24831,6.10068,3.29332,3.26915,2.711,1.37508,0.91052,-0.50553,0.03102,-2.7848,2.93593,-3.04771,1.45369,-3.00921,0.64013,-1.34791,0.4117,0.57261],"curve":[0.289,0.17,0.755,1]},{"time":0.6,"vertices":[-0.61389,-0.51936,-0.35211,0.0471,0.20587,1.38501,0.20587,1.38501,0.95459,1.09768,0,0,0.91437,-0.06736,3.56116,-0.61594,2.07892,-0.57745,0,0,0.95459,1.09768],"curve":[0.25,0,0.75,1]},{"time":1.2667,"offset":2,"vertices":[2.63837,3.77623,-0.26849,6.31027,3.43054,3.35289,2.78906,1.38741,0.95099,-0.528,-0.00824,-2.90557,2.90814,-3.15578,1.4259,-3.11729,0.66858,-1.40781,0.38757,0.54927],"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"vertices":[-0.02612,-0.0221,2.51111,3.61754,-0.24831,6.10068,3.29332,3.26915,2.711,1.37508,0.91052,-0.50553,0.03102,-2.7848,2.93593,-3.04771,1.45369,-3.00921,0.64013,-1.34791,0.4117,0.57261]}]},"Layer 18":{"orangegirl/Layer 18":[{"time":0,"vertices":[-1.64929,5.69569,-0.32039,0.09671,-1.34393,0.21388,-1.39415,4.37973],"curve":[0.289,0.17,0.755,1]},{"time":0.6,"curve":[0.25,0,0.75,1]},{"time":1.2667,"vertices":[-1.7226,5.94883,-0.33463,0.101,-1.40366,0.22338,-1.45612,4.57438],"curve":[0.305,0,0.64,0.36]},{"time":1.3333,"vertices":[-1.64929,5.69569,-0.32039,0.09671,-1.34393,0.21388,-1.39415,4.37973]}]},"Layer 21":{"orangegirl/Layer 21":[{"time":0,"vertices":[-2.90479,-2.39697,-1.134,3.66266,0.31714,1.62515,-0.5188,2.08878,1.09491,0.21213,0.34814,0.07742,-0.07333,0.02658,-0.36234,0.19601,-0.81573,-0.30927,-0.78293,-0.7948,-1.1073,-1.23572,-0.41614,-1.64166,0.54056,-1.37823,0,0,-0.2403,-0.06383,0.27606,-3.58043,0.55835,-3.22539,0.41931,-3.13789,-0.50146,-2.8946,-0.55951,-2.66772,0.0838,-2.79983,-0.33167,-2.46046,0.09045,-1.80918,-0.74121,-1.60297,-1.59729,-1.39085,2.06073,1.53607,-2.02728,-1.58291,1.81671,2.23145,0,0,-3.68341,-1.35974,-4.42084,-3.32454,-0.57959,1.85233,1.19217,0.15677,1.07611,-0.65573,0.05243,-0.89981,0.62201,0.87703,2.79114,3.62211,2.39505,-3.89417,2.155,-3.93097,-0.31897,-0.48169,-0.47675,-0.32455,-0.04495,-1.13504,-0.47058,-1.03294,-0.19879,-0.15076,-0.2403,-0.06383,-1.23187,-3.28895,-0.57678,-3.43739,0.00861,-3.42311,2.08984,2.13651,-1.10358,-2.77767,-2.04309,-2.18386,-1.28052,-2.98283,-2.28387,-2.31008,-0.18518,-2.809,-1.19934,-2.54776],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-0.88708,1.90549,2.12082,0.14493,1.87054,0.23218,1.52231,0.3605,-0.4801,1.71707,-0.75974,1.62006,-0.91898,1.57486,-1.03986,1.62302,-1.18527,1.40076,-1.32712,2.16837,-1.42679,1.97842,-1.13763,1.86362,-1.32846,2.34338,0.43439,3.01584,2.36871,4.86619,2.36871,4.86619,2.36871,4.86619,2.36871,4.86619,3.8139,1.53864,1.82956,0.38965,1.82956,0.38965,1.82956,0.38965,-0.38129,-2.6877,-0.38129,-2.6877,-0.38129,-2.6877,-0.00568,2.71428,-0.38129,-2.6877,-0.34033,-0.43988,0,0,0,0,-0.86298,2.16551,-0.78674,-0.54812,-0.18985,2.31973,-0.6199,2.33389,-0.99973,2.17792,-1.69135,-1.57591,-1.69135,-1.57591,-0.7504,2.18674,-1.04932,3.05652,0.8233,3.01532,1.25153,2.86418,1.638,5.1584,2.36871,4.86619,1.638,5.1584,2.36871,4.86619,2.36871,4.86619,2.36871,4.86619,2.36871,4.86619,-1.75458,-0.64642,1.37177,1.27076,1.82956,0.38965,1.37177,1.27076,1.82956,0.38965,1.37177,1.27076,1.82956,0.38965],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-2.90479,-2.39697,-1.134,3.66266,0.31714,1.62515,-0.5188,2.08878,1.09491,0.21213,0.34814,0.07742,-0.07333,0.02658,-0.36234,0.19601,-0.81573,-0.30927,-0.78293,-0.7948,-1.1073,-1.23572,-0.41614,-1.64166,0.54056,-1.37823,0,0,-0.2403,-0.06383,0.27606,-3.58043,0.55835,-3.22539,0.41931,-3.13789,-0.50146,-2.8946,-0.55951,-2.66772,0.0838,-2.79983,-0.33167,-2.46046,0.09045,-1.80918,-0.74121,-1.60297,-1.59729,-1.39085,2.06073,1.53607,-2.02728,-1.58291,1.81671,2.23145,0,0,-3.68341,-1.35974,-4.42084,-3.32454,-0.57959,1.85233,1.19217,0.15677,1.07611,-0.65573,0.05243,-0.89981,0.62201,0.87703,2.79114,3.62211,2.39505,-3.89417,2.155,-3.93097,-0.31897,-0.48169,-0.47675,-0.32455,-0.04495,-1.13504,-0.47058,-1.03294,-0.19879,-0.15076,-0.2403,-0.06383,-1.23187,-3.28895,-0.57678,-3.43739,0.00861,-3.42311,2.08984,2.13651,-1.10358,-2.77767,-2.04309,-2.18386,-1.28052,-2.98283,-2.28387,-2.31008,-0.18518,-2.809,-1.19934,-2.54776]}]},"Layer 22":{"orangegirl/Layer 22":[{"time":0,"vertices":[-1.41529,-2.65146,-1.41529,-2.65146,-1.41026,-2.65368,0.14924,-1.82706,0.38905,-1.67817,0.78579,-1.35932,0.77496,-0.52392,1.02335,-0.16566,1.02335,-0.16566,-0.04325,0.11212,-0.04325,0.11212,0.19097,1.11263,0.60313,-0.28845,1.43708,0.24514,1.40656,0.42362,1.30439,2.14153,1.34515,2.13195,1.07679,2.28388,0.95689,2.28675,0.98195,2.27814,4.33189,1.51671,0.1188,0.0155,-1.41529,-2.65146,0.07224,1.96753,0.34628,3.215,0.1188,0.0155],"curve":[0.369,0.63,0.706,1]},{"time":0.1,"vertices":[-1.39244,-2.7675,-1.39244,-2.7675,-1.38792,-2.76978,0.1721,-1.9431,0.41139,-1.79427,0.82904,-1.47144,0.7973,-0.64002,1.0666,-0.27778,1.0666,-0.27778,0,0,0,0,-0.03311,1.30172,0.37905,-0.09935,1.2497,0.45912,1.18249,0.61271,1.11612,2.35498,1.15776,2.34593,0.85271,2.47297,0.76863,2.5002,0.79456,2.49212,4.14363,1.73016,0,0,-1.39244,-2.7675,-0.04249,1.93824,0.2274,3.19983],"curve":[0.25,0,0.75,1]},{"time":0.7667,"vertices":[-1.66783,-1.36916,-1.66783,-1.36916,-1.65721,-1.37068,-0.1033,-0.54476,0.14211,-0.39517,0.3078,-0.12024,0.52801,0.75908,0.54536,1.07342,0.54536,1.07342,-0.52124,1.3512,-0.52124,1.3512,2.66733,-0.9771,3.07949,-2.37818,3.50791,-2.11961,3.88293,-1.66611,3.38492,-0.21736,3.41597,-0.2328,3.55315,0.19415,3.03743,-0.07215,3.05277,-0.08661,6.41243,-0.84218,1.43164,0.18686,-1.66783,-1.36916,1.34023,2.29132,1.66007,3.38265,1.43164,0.18686],"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"vertices":[-1.41529,-2.65146,-1.41529,-2.65146,-1.41026,-2.65368,0.14924,-1.82706,0.38905,-1.67817,0.78579,-1.35932,0.77496,-0.52392,1.02335,-0.16566,1.02335,-0.16566,-0.04325,0.11212,-0.04325,0.11212,0.19097,1.11263,0.60313,-0.28845,1.43708,0.24514,1.40656,0.42362,1.30439,2.14153,1.34515,2.13195,1.07679,2.28388,0.95689,2.28675,0.98195,2.27814,4.33189,1.51671,0.1188,0.0155,-1.41529,-2.65146,0.07224,1.96753,0.34628,3.215,0.1188,0.0155]}]},"Layer 24":{"orangegirl/Layer 24":[{"time":0,"vertices":[1.03632,3.57697,1.03632,3.57697,1.03632,3.57697,1.03632,3.57697],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-0.11575,-2.44227,-0.11575,-2.44227,-0.11575,-2.44227,-0.11575,-2.44227],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[1.03632,3.57697,1.03632,3.57697,1.03632,3.57697,1.03632,3.57697]}]},"Layer 25":{"orangegirl/Layer 25":[{"time":0,"offset":4,"vertices":[1.63474,4.13668,0,0,0,0,0,0,1.63474,4.13668],"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":2,"vertices":[-6.68701,-15.23603,-4.32626,-5.36677,-5.27972,-0.23512,-3.95526,0.68173,5.90005,0.2447,-4.32626,-5.36677,-6.68701,-15.23603],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":4,"vertices":[1.63474,4.13668,0,0,0,0,0,0,1.63474,4.13668]}]},"Layer 26":{"orangegirl/Layer 26":[{"time":0,"offset":4,"vertices":[0.88678,4.40195,0.88678,4.40195],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[4.33743,-0.82659,-2.81589,-10.9244,-7.0061,-10.98568,-7.0061,-10.98568,-2.81589,-10.9244,4.30136,2.33356],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":4,"vertices":[0.88678,4.40195,0.88678,4.40195]}]},"Layer 27":{"orangegirl/Layer 27":[{"time":0,"vertices":[-1.65826,4.19098,-1.65826,4.19098,-2.5343,1.63101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.5343,1.63101],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[4.39368,0.07538,4.57755,0.19751,4.57889,1.21092,0,0,0,0,0,0,0.33313,5.49666,0,0,2.51675,6.08661,2.73044,7.72655,0,0,0.58063,0.52634,4.68658,-2.36279,5.24503,2.43059,4.87222,1.45609,3.86349,5.86345,0.33313,5.49666],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-1.65826,4.19098,-1.65826,4.19098,-2.5343,1.63101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2.5343,1.63101]}]},"Layer 28":{"orangegirl/Layer 28":[{"time":0,"vertices":[-19.55502,-13.24926,-8.63733,8.43211,-1.10889,-2.2411,-1.10889,-2.2411],"curve":[0.247,0,0.63,0.53]},{"time":0.3667,"vertices":[-26.89351,-21.43072,-12.24606,14.16291,-2.03648,-3.40041,-0.48118,-0.97248],"curve":[0.248,0,0.628,0.51]},{"time":0.7,"vertices":[-31.30139,-32.22338,-15.68004,9.43523,-0.52036,-1.05166,-0.52036,-1.05166],"curve":[0.377,0.51,0.748,1]},{"time":1,"vertices":[-26.03697,-20.47579,-18.66742,5.32239,-0.55444,-1.12055,-0.55444,-1.12055],"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"vertices":[-19.55502,-13.24926,-8.63733,8.43211,-1.10889,-2.2411,-1.10889,-2.2411]}]},"Layer 30":{"orangegirl/Layer 30":[{"time":0,"vertices":[0.24055,-2.46506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.24055,-2.46506],"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":2,"vertices":[-1.55801,2.72546,0,0,2.01685,-2.15363,2.01685,-2.15363,0.46167,3.11702,2.01685,-2.15363,2.01685,-2.15363,0,0,0,0,3.97678,3.80516],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[0.24055,-2.46506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.24055,-2.46506]}]},"Layer 31":{"orangegirl/Layer 31":[{"time":0,"vertices":[-1.73892,2.13925,0,0,0,0,0.21997,-1.99396,0,0,0,0,0,0,0,0,0.21997,-1.99396,0.21997,-1.99396],"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":6,"vertices":[0.5916,7.64511,0,0,0.9623,6.40926,0,0,0,0,0.36682,3.34332,-7.57501,5.45633],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-1.73892,2.13925,0,0,0,0,0.21997,-1.99396,0,0,0,0,0,0,0,0,0.21997,-1.99396,0.21997,-1.99396]}]},"Layer 32":{"orangegirl/Layer 32":[{"time":0,"offset":2,"vertices":[-2.40073,-0.84612,-2.35554,-0.71766,-2.39641,-0.66554,0,0,-2.25375,1.12057,-2.25375,1.12057,-2.46265,1.17606],"curve":[0.369,0.63,0.706,1]},{"time":0.1,"offset":2,"vertices":[-2.42554,-0.8576,-2.42554,-0.8576,-2.42554,-0.8576,0,0,-2.46265,1.17606,-2.46265,1.17606,-2.46265,1.17606],"curve":[0.25,0,0.75,1]},{"time":0.7667,"offset":2,"vertices":[-2.12654,-0.71918,-1.58203,0.82889,-2.07446,1.457,0,0,0.05484,0.50739,0.05484,0.50739,-2.46265,1.17606],"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"offset":2,"vertices":[-2.40073,-0.84612,-2.35554,-0.71766,-2.39641,-0.66554,0,0,-2.25375,1.12057,-2.25375,1.12057,-2.46265,1.17606]}]},"Layer 33":{"orangegirl/Layer 33":[{"time":0,"vertices":[0.43114,-0.19184,0.9033,-1.09897,5.15075,-1.96879,0.00768,-0.11738,-1.92547,0.27115,0,0,0.07174,0.46108,-0.26543,0.34669,-0.37443,-1.1928,-0.28503,0.65508,0.32883,0.69636,0.74936,-0.00341,0.39762,-0.5376,-0.09787,-0.53284,-0.29353,-0.49204,-0.15357,-0.4349,-1.88917,-0.40069,-0.68919,-0.36373,1.29681,-0.51007,2.6E-4,0.22102,0.76063,-0.67229,-0.13531,-0.01063,1.08286,-0.61109,0.44076,-0.14366,2.72657,-1.81211,2.18398,-1.69233,4.0613,-3.54325,4.93289,-1.72657,5.04606,-3.23324,4.7252,-0.8343,2.59954,-2.04701,5.21424,-2.42631],"curve":[0.369,0.63,0.706,1]},{"time":0.1,"offset":2,"vertices":[1.19512,-0.89313,1.11961,-0.37103,0,0,-1.86506,-0.00327,0,0,-1.19506,0.89322,0,0,-1.50603,-0.88565,-0.12976,-0.09723,-0.04454,-0.04587,-0.05249,-0.03293,-0.14271,-0.07458,-0.08013,0.06207,-0.03515,0.05264,0,0,-1.34295,0.0723,0,0,-1.34295,0.07224,0,0,1.11961,-0.37103,0,0,1.19512,-0.89313,0,0,0.00174,-0.04727,2.20509,-0.39697,1.5694,-1.63849,2.38701,0.0788,2.61349,-1.48746,3.1356,-1.4119,2.9878,-2.23285,5.90957,-2.55472],"curve":[0.25,0,0.75,1]},{"time":0.7667,"vertices":[5.19579,-2.31192,-2.32167,-3.37375,-4.22021,-0.63159,0.09257,-1.41458,-2.5931,3.30383,0,0,-4.36259,5.1987,-3.1988,4.17804,-6.30275,4.92609,-2.00101,8.96902,4.45501,8.89899,9.61086,0.32275,6.36892,-5.65451,-0.29395,-7.10745,-3.14896,-6.51147,-1.85066,-5.24106,-7.92568,-5.62778,-8.30558,-4.38336,-9.10059,-2.92807,0.00319,2.6636,-3.20663,-4.00162,-1.63068,-0.12808,-0.15781,2.50583,5.31176,-1.73129,-6.75891,-0.24298,-5.58496,2.38666,-7.99838,-3.52045,-6.53023,-0.60541,-7.66938,-1.45355,-5.65926,-3.36938,-1.69127,0.00681,-2.47008,-1.0072],"curve":[0.244,0,0.694,0.77]},{"time":1.3333,"vertices":[0.43114,-0.19184,0.9033,-1.09897,5.15075,-1.96879,0.00768,-0.11738,-1.92547,0.27115,0,0,0.07174,0.46108,-0.26543,0.34669,-0.37443,-1.1928,-0.28503,0.65508,0.32883,0.69636,0.74936,-0.00341,0.39762,-0.5376,-0.09787,-0.53284,-0.29353,-0.49204,-0.15357,-0.4349,-1.88917,-0.40069,-0.68919,-0.36373,1.29681,-0.51007,2.6E-4,0.22102,0.76063,-0.67229,-0.13531,-0.01063,1.08286,-0.61109,0.44076,-0.14366,2.72657,-1.81211,2.18398,-1.69233,4.0613,-3.54325,4.93289,-1.72657,5.04606,-3.23324,4.7252,-0.8343,2.59954,-2.04701,5.21424,-2.42631]}]},"Layer 34":{"orangegirl/Layer 34":[{"time":0,"vertices":[0.7636,1.45425,1.85603,1.58466,-1.01463,-0.71191,-1.01463,-0.71191,-1.01463,-0.71191,-1.01463,-0.71191,1.35779,0.75867,0,0,1.56446,-0.87296,-0.55927,0.21146,2.57657,-3.01495,7.73225,0.73431,7.73225,0.73431,7.73225,0.73431],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[2.10257,1.98586,-3.03235,2.85754,0,0,0,0,0,0,0,0,-5.95149,-0.14172,0,0,-0.42717,0.46941,-0.95123,0.39796,-1.40576,0.1328,-8.58733,0.35806,-8.58733,0.35806,-8.58733,0.35806],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[0.7636,1.45425,1.85603,1.58466,-1.01463,-0.71191,-1.01463,-0.71191,-1.01463,-0.71191,-1.01463,-0.71191,1.35779,0.75867,0,0,1.56446,-0.87296,-0.55927,0.21146,2.57657,-3.01495,7.73225,0.73431,7.73225,0.73431,7.73225,0.73431]}]},"Layer 35":{"orangegirl/Layer 35":[{"time":0,"vertices":[-5.91086,-1.0795,0,0,0,0,0,0,0,0,0,0,0,0,1.80795,-0.89822,-1.76233,-2.49368,-2.67679,-3.08673,-3.37933,-0.45975,-5.91086,-1.0795,-5.91086,-1.0795,-5.91086,-1.0795,1.42604,-2.33591,9.61356,-0.40775,0.49065,-0.5141,7.86463,0.49683]},{"time":0.6667,"offset":28,"vertices":[-6.59262,2.06793,-3.92279,1.03802,-6.59262,2.06793,-3.92279,1.03802],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-5.91086,-1.0795,0,0,0,0,0,0,0,0,0,0,0,0,1.80795,-0.89822,-1.76233,-2.49368,-2.67679,-3.08673,-3.37933,-0.45975,-5.91086,-1.0795,-5.91086,-1.0795,-5.91086,-1.0795,1.42604,-2.33591,9.61356,-0.40775,0.49065,-0.5141,7.86463,0.49683]}]},"Layer 36":{"orangegirl/Layer 36":[{"time":0,"vertices":[-0.55215,0.2731,3.69379,-0.39825,3.69379,-0.39825,3.69379,-0.39825,-0.55215,0.2731,1.98856,-2.01053,6.2345,-2.68188,6.2345,-2.68188,3.69379,-0.39825,0.64991,0.97693,-1.68095,4.10375,-11.75357,9.99238,-0.88525,-1.18417,5.31459,-5.32208,6.42516,-8.79028,4.98297,-9.43729,5.31459,-5.32208,3.93858,-6.18732,1.41277,-1.24183,-0.55215,0.2731,5.38184,-10.6138,3.93965,-11.2608],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-3.84827,2.6058,-7.14905,5.41795,-1.23975,1.19124,-5.27243,2.76942,-2.32767,0.50549,-1.98254,-0.00952,-8.04593,-2.64816,-9.38156,-7.47491,-3.5072,-1.63297,-3.84328,-1.56702,-3.33209,0.34371,-1.048,2.40594,-13.75943,6.52719,-14.6969,4.75217,-18.02554,4.66318,-13.8446,3.4101,-10.70868,0.30428,-16.16693,2.83209,-5.69346,-1.32599,-16.04822,6.7139,-20.45432,5.62036,-15.35889,4.15057],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-0.55215,0.2731,3.69379,-0.39825,3.69379,-0.39825,3.69379,-0.39825,-0.55215,0.2731,1.98856,-2.01053,6.2345,-2.68188,6.2345,-2.68188,3.69379,-0.39825,0.64991,0.97693,-1.68095,4.10375,-11.75357,9.99238,-0.88525,-1.18417,5.31459,-5.32208,6.42516,-8.79028,4.98297,-9.43729,5.31459,-5.32208,3.93858,-6.18732,1.41277,-1.24183,-0.55215,0.2731,5.38184,-10.6138,3.93965,-11.2608]}]},"Layer 37":{"orangegirl/Layer 37":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":18,"vertices":[0.56833,0.14588,0,0,0.89313,2.34333,0.18405,5.30385,1.0826,3.1094],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 38":{"orangegirl/Layer 38":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":2,"vertices":[0.13928,3.3726,0.2136,3.92911,0.1115,0.83475,0.11149,0.83473,0,0,0,0,0,0,0,0,0,0,0.48316,3.6172],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 40":{"orangegirl/Layer 40":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-1.63484,0.14756,0.25928,7.00574,1.44616,2.14532,0.31318,-1.69501,0.25928,7.00574],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 41":{"orangegirl/Layer 41":[{"time":0,"offset":42,"vertices":[0.75128,-1.25662],"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":8,"vertices":[0.95444,7.79398,0,0,-0.15341,-1.24699,-0.15341,-1.24699,1.33807,-1.89987,0,0,0,0,0,0,0,0,-0.47751,15.62436,2.06851,9.40593,2.00623,11.89949,-1.84015,10.22757,-1.16559,10.5437,-1.16559,10.5437,-2.99768,12.05354,0.71429,8.45516,-1.0267,17.3553,2.43015,8.05411,-2.47818,14.21538,-3.22964,15.47202],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":42,"vertices":[0.75128,-1.25662]}]},"Layer 42":{"orangegirl/Layer 42":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[0.44743,2.49087,0,0,0,0,-1.64507,0.38885,0,0,-0.53281,3.82752,-7.25861,2.24779,-0.12569,0.87719,0,0,0,0,1.23495,3.68614],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 43":{"orangegirl/Layer 43":[{"time":0,"offset":2,"vertices":[-1.73145,1.22185,1.0451,3.30569],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[1.06821,0.26834,3.14307,-0.71808,-0.2243,-0.17757],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":2,"vertices":[-1.73145,1.22185,1.0451,3.30569]}]},"Layer 44":{"orangegirl/Layer 44":[{"time":0,"offset":12,"vertices":[0.28452,-5.20607,0,0,0,0,0,0,0,0,0,0,0.14893,-2.72391,0.28452,-5.20607],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-0.11646,1.39981,0,0,0,0,0,0,0,0,0.26373,9.53623,-0.18552,14.93478,-0.18668,2.24312,-0.05334,0.64088,-0.05695,-1.6972,1.2189,-0.15748,0,0,-0.51236,6.15742,-0.45285,3.06046,1.2189,-0.15748],"curve":[0.25,0,0.75,1]},{"time":1.3333,"offset":12,"vertices":[0.28452,-5.20607,0,0,0,0,0,0,0,0,0,0,0.14893,-2.72391,0.28452,-5.20607]}]},"Layer 45":{"orangegirl/Layer 45":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"offset":10,"vertices":[-0.80888,0.42868,-0.92402,-0.02227,1.2496,-1.83169,1.2496,-1.83169,1.2496,-1.83169,1.2496,-1.83169,1.2496,-1.83169,0,0,0,0,-3.56068,-1.5259,-2.26229,-3.03098,0,0,0,0,1.2496,-1.83169,-0.80888,0.42868,-0.92402,-0.02227],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 46":{"orangegirl/Layer 46":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[-3.49928,-0.43932,-2.34684,1.98759,-1.24182,2.12631,0,0,0,0,-1.28923,-0.16187,-1.24182,2.12631,-1.24182,2.12631],"curve":[0.25,0,0.75,1]},{"time":1.3333}]},"Layer 48":{"orangegirl/Layer 48":[{"time":0,"vertices":[4.20801,-4.134,4.20801,-4.134,5.11742,-3.05878,2.05524,2.20349,1.285,2.58575,-0.36971,2.8573,3.46272,-2.78723,3.46272,-2.78723,0.50061,-1.81009,6.9274,-2.07736,7.1751,-0.41727,-0.72916,8.58368,-1.83881,6.64337,0.6608,5.472,5.11742,-3.05878,3.46272,-2.78723,4.20801,-4.134,5.11742,-3.05878,4.20801,-4.134,0.6608,5.472]},{"time":0.3333,"vertices":[2.75285,2.28097,2.77536,1.85089,2.05008,2.30266,2.15317,7.29325,-0.06982,7.18826,-0.06982,7.18826,4.69245,0.15307,4.00689,-2.04025,2.45002,-0.47653,7.00067,-0.21704,6.55495,1.13335,-1.63219,5.19025,-3.48734,3.49259,-2.23753,2.90691,4.67374,-0.01704,4.67374,-0.01704,4.51936,-0.8376,4.67374,-0.01704,4.51936,-0.8376,-2.23753,2.90691]},{"time":0.6667,"vertices":[3.6485,5.05754,3.0795,3.68994,2.75449,5.269,2.92773,9.01588,1.43103,9.28148,1.43103,9.28148,4.26749,3.36492,2.89636,-1.02171,2.08687,-0.60934,6.4045,0.93729,5.513,1.85271,-2.53522,1.79681,-5.13586,0.34182,-5.13586,0.34182,4.23007,3.02469,4.23007,3.02469,4.83072,2.45879,4.23007,3.02469,4.83072,2.45879,-5.13586,0.34182],"curve":[0.25,0,0.625,0.5]},{"time":1,"vertices":[3.56053,-0.10475,3.59599,-0.78255,3.33702,0.05329,3.56053,-0.10475,3.32747,0.23565,3.32747,0.23565,3.32747,0.23565,2.6232,-2.12778,1.06633,-0.56407,5.19044,0.51025,4.31535,1.18838,-1.02618,2.8137,-2.32651,2.0862,-2.32651,2.0862,3.29005,-0.10458,3.29005,-0.10458,3.52312,-0.44498,3.29005,-0.10458,3.52312,-0.44498,-2.32651,2.0862],"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"vertices":[4.20801,-4.134,4.20801,-4.134,5.11742,-3.05878,2.05524,2.20349,1.285,2.58575,-0.36971,2.8573,3.46272,-2.78723,3.46272,-2.78723,0.50061,-1.81009,6.9274,-2.07736,7.1751,-0.41727,-0.72916,8.58368,-1.83881,6.64337,0.6608,5.472,5.11742,-3.05878,3.46272,-2.78723,4.20801,-4.134,5.11742,-3.05878,4.20801,-4.134,0.6608,5.472]}]},"Layer 49":{"orangegirl/Layer 49":[{"time":0,"vertices":[-0.4782,0.67334,-0.40621,0.80783,-0.26221,1.07685,-0.26221,1.07685,0.26638,0.56764,-2.80293,-1.31384,-2.37312,2.98322,-2.37312,2.98322,3.39433,-1.29298,-5.95052,-3.19775,4.0877,5.37055,3.209,5.93987,3.209,5.93987,3.209,5.93987,4.47938,3.56471,3.88059,4.14609,4.47938,3.56471,3.88059,4.14609,3.23872,2.183,3.23707,0.61113,3.23707,0.61113,1.40537,1.21314,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,0,0,0,0,0,0,0,0,-2.52091,0.23039,-0.4782,0.67334,-0.4782,0.67334,1.40537,1.21314,1.17469,1.39526,0,0,0,0,0,0,0,0,0,0,-0.02376,-0.31221,-0.03259,-0.31142,1.87909,-1.64216,1.91058,-1.37178,1.46961,-5.0647,2.01342,-4.81702,4.68707,1.40994,4.25407,2.07694,2.60065,-3.26027,2.92779,-2.89365,0.482,-2.55866,2.0164,2.60111,1.54989,2.85945,1.61304,-0.75424,1.61304,-0.75424],"curve":[0.25,0,0.75,1]},{"time":0.6667,"vertices":[0.91323,2.80645,1.70891,4.29272,3.30021,7.26572,3.30021,7.26572,1.16257,4.4209,0.4186,6.00239,0.6147,7.67039,2.84368,12.3717,0.36412,-12.28923,2.09456,7.79216,1.10066,-7.98446,0.25386,-7.45123,0.65901,-11.29376,0.40703,-9.09334,1.20519,-8.07238,0.97558,-8.07588,-0.18272,-12.30712,-0.53195,-12.26937,0.0038,-9.75519,-0.30488,-10.5073,-0.29698,-11.16284,-0.60663,-11.29564,-0.95048,-11.25381,-0.86167,-11.67584,-0.66499,-9.83445,-0.71537,-10.18621,-1.13368,-10.26638,-1.00311,-6.34358,-1.18219,-6.31263,-3.5509,-7.29217,0,0,0.72839,2.76637,0.91323,2.80645,0.91323,2.80645,-0.92777,-9.62328,-1.22364,-9.57312,-0.41827,-4.87172,-0.8587,-4.8136,-0.99426,-4.78736,1.74078,2.22095,1.93536,2.05378,-0.36531,-8.528,-0.60651,-8.51436,1.8728,-1.13245,1.73291,-1.2775,0.53198,-5.42204,0.00818,-5.42763,1.33429,-4.07215,1.66051,-4.16613,1.54278,-4.98763,1.05426,-5.08674,0.9964,-4.00177,2.21053,-7.96378,1.0095,-7.97005,1.99548,-7.6864,1.14825,-6.13899],"curve":[0.25,0,0.75,1]},{"time":1.3333,"vertices":[-0.4782,0.67334,-0.40621,0.80783,-0.26221,1.07685,-0.26221,1.07685,0.26638,0.56764,-2.80293,-1.31384,-2.37312,2.98322,-2.37312,2.98322,3.39433,-1.29298,-5.95052,-3.19775,4.0877,5.37055,3.209,5.93987,3.209,5.93987,3.209,5.93987,4.47938,3.56471,3.88059,4.14609,4.47938,3.56471,3.88059,4.14609,3.23872,2.183,3.23707,0.61113,3.23707,0.61113,1.40537,1.21314,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,1.17469,1.39526,0,0,0,0,0,0,0,0,-2.52091,0.23039,-0.4782,0.67334,-0.4782,0.67334,1.40537,1.21314,1.17469,1.39526,0,0,0,0,0,0,0,0,0,0,-0.02376,-0.31221,-0.03259,-0.31142,1.87909,-1.64216,1.91058,-1.37178,1.46961,-5.0647,2.01342,-4.81702,4.68707,1.40994,4.25407,2.07694,2.60065,-3.26027,2.92779,-2.89365,0.482,-2.55866,2.0164,2.60111,1.54989,2.85945,1.61304,-0.75424,1.61304,-0.75424]}]}}}}}},"raptor":{"skeleton":{"hash":"zPDnbObhvsZqEhisAMAcYxgnNmY","spine":"3.6.39","width":1296.89,"height":1055.12},"bones":[{"name":"root"},{"name":"hip","parent":"root","rotation":3.16,"x":-136.79,"y":415.48},{"name":"torso1","parent":"hip","length":126.26,"rotation":-4.98,"x":30.04,"y":-0.4},{"name":"saddle","parent":"torso1","length":50.92,"rotation":91.8,"x":25.31,"y":70.65},{"name":"spineboy-hip","parent":"saddle","length":0.53,"rotation":90.02,"x":81.88,"y":2.69},{"name":"spineboy-torso","parent":"spineboy-hip","length":122.45,"rotation":-75.86,"x":1.05,"y":-2.11},{"name":"torso2","parent":"torso1","length":121.2,"rotation":39.85,"x":126.26,"y":-0.38},{"name":"neck","parent":"torso2","length":70.6,"rotation":41.38,"x":121.2,"y":0.35},{"name":"head","parent":"neck","length":105.51,"rotation":9.83,"x":70.6,"y":0.04},{"name":"horn-rear","parent":"head","length":73.78,"rotation":44.32,"x":104.76,"y":-242.01},{"name":"rear-arm-target","parent":"horn-rear","rotation":-133.55,"x":232.68,"y":245.85},{"name":"back-arm","parent":"spineboy-torso","length":67.21,"rotation":-120.9,"x":96.33,"y":-38.47},{"name":"back-bracer","parent":"back-arm","length":43.69,"rotation":17.48,"x":67.22,"y":-0.32},{"name":"back-hand","parent":"back-bracer","length":41.98,"rotation":9.21,"x":43.68,"y":0.06,"transform":"noRotationOrReflection"},{"name":"spineboy-rear-arm-goal","parent":"saddle","x":-30.44,"y":-100.08},{"name":"back-thigh","parent":"spineboy-hip","length":71.16,"rotation":160.75,"x":-9.57,"y":2.32},{"name":"back-knee","parent":"back-thigh","length":97.17,"rotation":-54.98,"x":71.16,"y":-0.28},{"name":"neck2","parent":"spineboy-torso","length":32.05,"rotation":-45.23,"x":113.44,"y":-15.22},{"name":"head2","parent":"neck2","length":167.19,"rotation":11.66,"x":25.68,"y":-0.77},{"name":"bone","parent":"head2","length":39.92,"rotation":-35.23,"x":166.09,"y":-79.27},{"name":"bone2","parent":"bone","length":47.42,"rotation":51.8,"x":39.92},{"name":"bone3","parent":"head2","length":45.41,"rotation":-12.34,"x":179.8,"y":-20.91},{"name":"bone4","parent":"bone3","length":43.31,"rotation":42.01,"x":44.64,"y":0.3},{"name":"bone5","parent":"bone4","length":44.88,"rotation":48.8,"x":43.31},{"name":"dust-root","parent":"root"},{"name":"dust","parent":"dust-root","x":231.15,"y":-2.15,"scaleX":2.285,"scaleY":1.427},{"name":"dust2","parent":"dust-root","x":-147.58,"y":-2.15,"scaleX":1.635,"scaleY":1.021},{"name":"dust3","parent":"dust-root","x":429.77,"y":20.67,"scaleX":2.285,"scaleY":1.427},{"name":"dust4","parent":"dust-root","x":29.91,"y":14.02,"scaleX":1.635,"scaleY":1.021},{"name":"horn-front","parent":"head","length":87.48,"rotation":49.36,"x":87.97,"y":-235.15},{"name":"front-arm-target","parent":"horn-front","rotation":-138.6,"x":294.58,"y":234.18},{"name":"front-arm","parent":"spineboy-torso","length":74.52,"rotation":-118.17,"x":101.38,"y":9.79},{"name":"front-bracer","parent":"front-arm","length":39.85,"rotation":20.31,"x":74.52,"y":-0.42},{"name":"front-arm1","parent":"torso2","length":109.99,"rotation":224.54,"x":46.37,"y":-84.62},{"name":"front-arm2","parent":"front-arm1","length":86.33,"rotation":105.24,"x":109.99,"y":0.2},{"name":"front-foot-goal","parent":"root","rotation":-0.95,"x":-45.8,"y":-28.67},{"name":"front-leg-goal","parent":"front-foot-goal","x":-106.06,"y":115.58},{"name":"front-leg1","parent":"hip","length":251.75,"rotation":-51.51,"x":27.36,"y":-28.28},{"name":"front-leg2","parent":"front-leg1","length":208.55,"rotation":261.94,"x":251.04,"y":0.16},{"name":"front-leg3","parent":"front-leg2","length":118.18,"rotation":85.46,"x":208.5,"y":-1.64},{"name":"front-foot1","parent":"front-leg3","length":57.79,"rotation":54.46,"x":118.2,"y":-0.79,"scaleX":1.127},{"name":"front-foot2","parent":"front-foot1","length":56.19,"rotation":-2.16,"x":57.79,"y":-0.02,"scaleX":0.731,"scaleY":0.823,"transform":"noRotationOrReflection"},{"name":"front-foot3","parent":"front-foot2","length":129.88,"rotation":-2.7,"x":49.71,"y":20.66,"scaleX":1.155},{"name":"front-hand","parent":"front-arm2","length":47.56,"rotation":-56.83,"x":86.33,"y":0.06},{"name":"front-hand2","parent":"front-bracer","length":58.19,"rotation":13.9,"x":39.98,"y":-0.9,"transform":"noRotationOrReflection"},{"name":"spineboy-front-arm-goal","parent":"saddle","x":-50.71,"y":-96.93},{"name":"front-thigh","parent":"spineboy-hip","length":77.79,"rotation":163.34,"x":15.52,"y":17.02},{"name":"lower-leg","parent":"front-thigh","length":111.5,"rotation":-49.62,"x":77.93,"y":-0.11},{"name":"gun","parent":"spineboy-hip","length":181.35,"rotation":107.12,"x":16.86,"y":-7.89,"scaleX":0.816,"scaleY":0.816},{"name":"jaw","parent":"head","length":203.76,"rotation":-125.79,"x":49.11,"y":-68.46},{"name":"jaw-inside","parent":"jaw","x":94.7,"y":33.64},{"name":"rear-arm1","parent":"torso2","length":109.56,"rotation":-124.72,"x":57.05,"y":-95.39},{"name":"rear-arm2","parent":"rear-arm1","length":85.8,"rotation":123.56,"x":109.57,"y":-0.01},{"name":"rear-foot-goal","parent":"root","x":33.44,"y":30.82},{"name":"rear-leg-goal","parent":"rear-foot-goal","x":-127.51,"y":75.99},{"name":"rear-leg1","parent":"hip","length":226.28,"rotation":-54.76,"x":55.19,"y":-71.25},{"name":"rear-leg2","parent":"rear-leg1","length":172.59,"rotation":-92.25,"x":226.32,"y":0.23},{"name":"rear-leg3","parent":"rear-leg2","length":103.05,"rotation":82.82,"x":172.32,"y":2.21},{"name":"rear-foot1","parent":"rear-leg3","length":84.51,"rotation":75.43,"x":102.38,"y":-0.03},{"name":"rear-foot2","parent":"rear-foot1","length":102.31,"rotation":-6.14,"x":84.5,"y":-0.35,"transform":"noRotationOrReflection"},{"name":"rear-hand","parent":"rear-arm2","length":45.81,"rotation":-76.28,"x":85.8,"y":0.11},{"name":"saddle-strap-front1","parent":"saddle","length":97.28,"rotation":-148.12,"x":-27.36,"y":-73.39},{"name":"saddle-strap-front2","parent":"saddle-strap-front1","length":102.74,"rotation":-11.14,"x":97.29,"y":0.31},{"name":"saddle-strap-rear1","parent":"saddle","length":38.62,"rotation":151.14,"x":-33.34,"y":87.33},{"name":"saddle-strap-rear2","parent":"saddle-strap-rear1","length":54.36,"x":38.63,"y":-0.02},{"name":"saddle-strap-rear3","parent":"saddle-strap-rear2","length":44.05,"rotation":3.63,"x":54.87,"y":0.2},{"name":"stirrup","parent":"saddle","length":78.17,"rotation":-68.86,"x":-81.94,"y":-103.38},{"name":"stirrup-strap1","parent":"saddle","length":43.7,"rotation":-135,"x":-20.38,"y":-29.37},{"name":"stirrup-strap2","parent":"stirrup-strap1","length":51.62,"rotation":9.39,"x":43.71},{"name":"tail1","parent":"hip","length":81.26,"rotation":153.61,"x":-20.87,"y":6.87},{"name":"tail2","parent":"tail1","length":81.26,"rotation":10.42,"x":81.26},{"name":"tail3","parent":"tail2","length":65.01,"rotation":12.18,"x":81.26},{"name":"tail4","parent":"tail3","length":65.01,"x":65.01},{"name":"tail5","parent":"tail4","length":70.53,"rotation":4.36,"x":65.01},{"name":"tail6","parent":"tail5","length":70.53,"x":70.53},{"name":"tail7","parent":"tail6","length":63.13,"rotation":2.35,"x":70.53},{"name":"tail8","parent":"tail7","length":54.46,"rotation":0.97,"x":63.13},{"name":"tail9","parent":"tail8","length":49.21,"rotation":-1.29,"x":54.46},{"name":"tail10","parent":"tail9","length":45.53,"rotation":0.36,"x":49.21},{"name":"tongue1","parent":"head","length":55.12,"rotation":-129.04,"x":20.82,"y":-104.75},{"name":"tongue2","parent":"tongue1","length":44.67,"rotation":8.93,"x":55.6,"y":0.93},{"name":"tongue3","parent":"tongue2","length":43.65,"rotation":12.86,"x":44.27,"y":-0.21}],"slots":[{"name":"back-hand","bone":"back-hand","attachment":"raptor/back-hand"},{"name":"back-arm","bone":"back-arm","attachment":"raptor/back-arm"},{"name":"back-bracer","bone":"back-bracer","attachment":"raptor/back-bracer"},{"name":"back-knee","bone":"back-knee","attachment":"raptor/back-knee"},{"name":"raptor-jaw-inside","bone":"jaw-inside","color":"646464ff","attachment":"raptor/raptor-jaw"},{"name":"raptor-mouth-inside","bone":"jaw","attachment":"raptor/raptor-mouth-inside"},{"name":"raptor-horn-back","bone":"horn-rear","attachment":"raptor/raptor-horn-back"},{"name":"raptow-jaw-tooth","bone":"jaw","attachment":"raptor/raptor-jaw-tooth"},{"name":"raptor-tongue","bone":"root","attachment":"raptor/raptor-tongue"},{"name":"raptor-hindleg-back","bone":"rear-leg1","attachment":"raptor/raptor-hindleg-back"},{"name":"dust2","bone":"dust3"},{"name":"dust3","bone":"dust4"},{"name":"raptor-arm-back","bone":"root","attachment":"raptor/raptor-arm-back"},{"name":"back-thigh","bone":"back-thigh","attachment":"raptor/back-thigh"},{"name":"raptor-body","bone":"torso1","attachment":"raptor/raptor-body"},{"name":"raptor-saddle-strap-front","bone":"saddle-strap-front1","attachment":"raptor/raptor-saddle-strap-front"},{"name":"raptor-saddle-strap-rear","bone":"saddle-strap-rear1","attachment":"raptor/raptor-saddle-strap-rear"},{"name":"raptor-saddle-w-shadow","bone":"saddle","attachment":"raptor/raptor-saddle-w-shadow"},{"name":"raptor-saddle-noshadow","bone":"saddle"},{"name":"raptor-jaw","bone":"jaw","attachment":"raptor/raptor-jaw"},{"name":"raptor-front-arm","bone":"root","attachment":"raptor/raptor-front-arm"},{"name":"raptor-front-leg","bone":"front-leg1","attachment":"raptor/raptor-front-leg"},{"name":"neck","bone":"neck2","attachment":"raptor/neck"},{"name":"spineboy-torso","bone":"spineboy-torso","attachment":"raptor/torso"},{"name":"head","bone":"head2","attachment":"raptor/head"},{"name":"eyes-open","bone":"head2","attachment":"raptor/eyes-open"},{"name":"mouth-smile","bone":"head2","attachment":"raptor/mouth-smile"},{"name":"visor","bone":"head2","attachment":"raptor/visor"},{"name":"raptor-horn","bone":"horn-front","attachment":"raptor/raptor-horn"},{"name":"front-thigh","bone":"front-thigh","attachment":"raptor/front-thigh"},{"name":"stirrup-back","bone":"stirrup","attachment":"raptor/stirrup-back"},{"name":"lower-leg","bone":"lower-leg","attachment":"raptor/lower-leg"},{"name":"stirrup-strap","bone":"stirrup","attachment":"raptor/stirrup-strap"},{"name":"stirrup-front","bone":"stirrup","attachment":"raptor/stirrup-front"},{"name":"gun","bone":"gun","attachment":"raptor/gun-nohand"},{"name":"front-arm","bone":"front-arm","attachment":"raptor/front-arm"},{"name":"front-bracer","bone":"front-bracer","attachment":"raptor/front-bracer"},{"name":"front-hand","bone":"front-hand2","attachment":"raptor/front-hand"},{"name":"dust01","bone":"dust"},{"name":"dust1","bone":"dust2"},{"name":"tail-shadow","bone":"torso1","color":"00000000"}],"ik":[{"name":"front-arm-goal","order":0,"bones":["front-arm","front-bracer"],"target":"front-arm-target"},{"name":"front-foot-goal","order":2,"bones":["front-leg3","front-foot1"],"target":"front-foot-goal"},{"name":"front-leg-goal","order":1,"bones":["front-leg1","front-leg2"],"target":"front-leg-goal","bendPositive":false},{"name":"rear-arm-goal","order":3,"bones":["back-arm","back-bracer"],"target":"rear-arm-target"},{"name":"rear-foot-goal","order":5,"bones":["rear-leg3","rear-foot1"],"target":"rear-foot-goal"},{"name":"rear-leg-goal","order":4,"bones":["rear-leg1","rear-leg2"],"target":"rear-leg-goal","bendPositive":false},{"name":"spineboy-front-leg-goal","order":6,"bones":["front-thigh","lower-leg"],"target":"spineboy-front-arm-goal","bendPositive":false},{"name":"spineboy-rear-leg-goal","order":7,"bones":["back-thigh","back-knee"],"target":"spineboy-rear-arm-goal","bendPositive":false},{"name":"stirrup","order":8,"bones":["stirrup-strap1","stirrup-strap2"],"target":"stirrup"}],"skins":{"default":{"back-arm":{"raptor/back-arm":{"x":29.72,"y":2.05,"rotation":16.76,"width":91,"height":57}},"back-bracer":{"raptor/back-bracer":{"x":13.2,"y":-4.28,"rotation":-0.73,"width":77,"height":55}},"back-hand":{"raptor/back-hand":{"x":18.61,"y":4.24,"rotation":-10.99,"width":72,"height":68}},"back-knee":{"raptor/back-knee":{"x":45.77,"y":20.47,"rotation":74.23,"width":97,"height":134}},"back-thigh":{"raptor/back-thigh":{"x":37.85,"y":-4.37,"rotation":19.25,"width":78,"height":47}},"dust01":{"raptor/dust01":{"scaleX":-1,"width":96,"height":73},"raptor/dust02":{"scaleX":-1,"width":86,"height":88},"raptor/dust03":{"scaleX":-1,"width":62,"height":52}},"dust1":{"raptor/dust01":{"width":96,"height":73},"raptor/dust02":{"width":86,"height":88},"raptor/dust03":{"width":62,"height":52}},"dust2":{"raptor/dust01":{"scaleX":-1,"width":96,"height":73},"raptor/dust02":{"scaleX":-1,"width":86,"height":88},"raptor/dust03":{"scaleX":-1,"width":62,"height":52}},"dust3":{"raptor/dust01":{"width":96,"height":73},"raptor/dust02":{"width":86,"height":88},"raptor/dust03":{"width":62,"height":52}},"eyes-open":{"raptor/eyes-open":{"x":93.24,"y":-25.45,"rotation":-70.58,"width":93,"height":89}},"front-arm":{"raptor/front-arm":{"x":31.38,"y":5.09,"rotation":14.02,"width":96,"height":60}},"front-bracer":{"raptor/front-bracer":{"x":11.68,"y":-1.37,"rotation":-6.28,"width":81,"height":58}},"front-hand":{"raptor/front-hand":{"x":35.7,"y":7.84,"rotation":-13.97,"width":82,"height":75},"raptor/front-open-hand":{"x":42.55,"y":4.62,"rotation":62.19,"width":86,"height":87},"raptor/gun":{"x":98.91,"y":22.98,"rotation":56.35,"width":213,"height":206}},"front-thigh":{"raptor/front-thigh":{"x":45.7,"y":-3.1,"rotation":16.66,"width":114,"height":58}},"gun":{"raptor/gun-nohand":{"type":"mesh","uvs":[0.71081,0.16149,0.85808,0.41785,1,0.6649,1,1,0.71457,1,0.49803,0.69051,0.30183,0.41009,0,0.58226,0,0.11741,0.27187,0.1243,0.24857,0,0.36658,0,0.61804,0,0.70575,0.53546,0.53669,0.26855],"triangles":[3,13,2,5,13,4,3,4,13,13,6,14,13,5,6,13,1,2,6,8,9,6,7,8,13,14,1,14,0,1,6,9,14,9,11,14,14,12,0,14,11,12,9,10,11],"vertices":[23.49,50.64,83.87,46.33,142.06,42.18,197.91,3.35,163.7,-45.87,86.16,-47.35,15.9,-48.69,8.42,-120.68,-69.06,-66.82,-35.33,-20.74,-58.84,-10.35,-44.69,10,-14.55,53.36,85.21,6.44,20.46,8.21],"hull":13}},"head":{"raptor/head":{"type":"mesh","uvs":[0.73461,0.04542,0.88414,0.17033,0.88955,0.31976,0.91126,0.27463,0.9461,0.20217,1,0.29892,1,0.34554,1,0.4508,0.91249,0.51206,0.84514,0.51207,0.8209,0.59663,0.77915,0.67257,0.73605,0.75464,0.83571,0.73994,0.84784,0.84528,0.7549,0.93101,0.63773,1,0.39394,1,0.14747,0.82935,0,0.59419,0,0.36645,0.09623,0.20353,0.21474,0.14594,0.45179,0.15693,0.51509,0.1263,0.507,0.07853,0.42079,0,0.56221,0,0.19055,0.39949,0.27942,0.31373,0.79396,0.479,0.76029,0.85997,0.53421,0.16964,0.53207,0.04286,0.61949,0.08784,0.70424,0.16685,0.69053,0.432,0.85592,0.37861,0.45844,0.34997,0.48658,0.30193,0.66307,0.35065,0.58439,0.39448,0.70468,0.26242,0.51985,0.21924],"triangles":[23,24,32,32,24,34,35,34,0,34,25,33,34,24,25,33,27,34,34,27,0,25,26,33,33,26,27,32,35,42,35,0,1,32,34,35,36,40,37,40,42,37,37,42,2,40,43,42,2,42,1,43,32,42,42,35,1,7,37,6,37,2,6,6,2,5,2,3,5,3,4,5,8,37,7,10,36,30,10,11,36,15,16,31,18,12,17,38,18,28,12,31,16,12,41,36,41,12,18,41,18,38,38,28,29,15,31,14,12,16,17,14,31,13,31,12,13,18,19,28,12,36,11,19,20,28,29,28,21,38,39,41,28,20,21,39,43,40,38,29,39,21,22,29,29,22,39,22,23,39,39,23,43,43,23,32,41,39,40,10,30,9,41,40,36,8,9,37,9,30,37,30,36,37],"vertices":[4,20,104.37,61.36,1.7E-4,21,97.55,28.7,0.02495,22,58.33,-14.31,0.29446,23,-0.88,-20.72,0.68043,4,19,67.76,66.16,0.00139,20,69.21,19.04,0.077,21,87.24,-25.34,0.80658,22,14.49,-47.57,0.11502,3,19,43.19,28.99,0.10855,20,24.81,15.35,0.61823,21,50.15,-50.03,0.27322,3,19,55.77,36.56,0.00412,20,38.53,10.15,0.9783,21,64.68,-47.95,0.01758,1,20,60.57,1.79,1,1,20,32.5,-14.23,1,1,20,18.62,-14.92,1,2,19,45.01,-20.18,0.76042,20,-12.71,-16.48,0.23958,1,18,166.12,-105.42,1,1,18,160.05,-88.21,1,1,18,134.1,-90.39,1,1,18,108.99,-87.24,1,1,18,82.04,-84.36,1,1,18,95.16,-108.38,1,1,18,66.64,-121.91,1,1,18,34.17,-106.65,1,1,18,4.23,-83.54,1,2,18,-17.74,-21.23,0.99385,19,-183.64,-58.64,0.00615,1,18,8.01,58.67,1,1,18,60.82,119.66,1,1,18,124.82,142.22,1,3,18,179.28,133.77,0.94385,22,42.73,164.31,0.02735,23,123.25,108.67,0.0288,3,18,206.14,109.19,0.90085,22,53.91,129.66,0.04882,23,104.53,77.43,0.05033,4,18,224.42,47.51,0.5441,21,28.95,76.38,0.02138,22,39.26,67.02,0.1911,23,47.76,47.19,0.24342,4,18,238.73,34.37,0.20163,21,45.75,66.6,0.01748,22,45.19,48.52,0.20502,23,37.74,30.54,0.57587,4,18,251.42,41.17,0.04103,21,56.69,75.96,0.00142,22,59.59,48.14,0.05275,23,46.95,19.46,0.90481,3,18,265.73,70.99,1.0E-5,22,86.77,66.97,0,23,79.02,11.41,0.99999,1,23,46.15,-8.3,1,1,18,132.71,90.25,1,1,18,164.81,76.03,1,1,18,164.73,-71.85,1,1,18,54.62,-100.99,1,4,18,228.27,25.19,0.27948,21,37.49,55.39,0.04667,22,31.56,45.72,0.29438,23,26.66,38.96,0.37947,3,18,263.71,38.3,0.00762,22,68.84,39.57,0.00991,23,46.59,6.85,0.98247,4,18,258.94,11.5,0.01199,21,70.38,48.58,7.0E-5,22,51.44,18.64,0.07826,23,19.38,6.16,0.90968,3,18,244.37,-17.99,1.9E-4,22,24.18,0.23,0.99884,23,-12.43,14.54,9.7E-4,1,18,168.62,-40.76,1,3,19,25.61,19.96,0.50536,20,6.84,23.59,0.2645,21,30.44,-51.51,0.23014,1,18,170.76,26.69,1,4,18,186.8,24.26,0.75057,21,-2.82,45.62,0.07609,22,-4.94,65.43,0.10488,23,17.45,79.4,0.06845,3,19,-12.2,56.99,0.01171,20,12.56,76.2,8.7E-4,21,10.01,-2.69,0.98742,1,18,169.6,-9.91,1,4,18,217.55,-27.57,0.00156,21,38.3,1.56,0.97801,22,-3.86,5.17,0.01942,23,-27.18,38.9,0.00101,4,18,213.04,23.94,0.43153,21,22.88,50.92,0.09832,22,17.71,52.17,0.26174,23,22.39,53.63,0.20841],"hull":28}},"lower-leg":{"raptor/lower-leg":{"x":76.2,"y":22.21,"rotation":66.28,"width":146,"height":195}},"mouth-smile":{"raptor/mouth-grind":{"x":27.66,"y":-31.33,"rotation":-70.58,"width":93,"height":59},"raptor/mouth-smile":{"x":27.66,"y":-31.33,"rotation":-70.58,"width":93,"height":59}},"neck":{"raptor/neck":{"x":15.1,"y":-1.67,"rotation":-58.92,"width":36,"height":41}},"raptor-arm-back":{"raptor/raptor-arm-back":{"type":"mesh","uvs":[0.38712,0.29362,0.31383,0.46513,0.29243,0.51522,0.32476,0.49311,0.57587,0.32139,0.63255,0.28263,0.71632,0.34508,0.94948,0.51888,0.94948,0.60129,1,0.65257,1,0.90624,0.95463,0.99934,0.88957,0.83205,0.80295,0.99999,0.75236,0.75696,0.6654,0.71301,0.62289,0.63243,0.58195,0.65032,0.22479,0.80641,0.07792,0.73315,0.07825,0.6655,0.07985,0.34307,0,0.29728,0,0,0.32335,0],"triangles":[6,15,16,5,6,16,5,16,4,6,7,15,16,17,4,8,15,7,14,15,8,12,14,8,12,8,9,12,9,10,11,12,10,13,14,12,17,3,4,19,20,2,18,19,2,18,2,3,18,3,17,21,22,23,24,21,23,0,21,24,1,21,0,1,20,21,2,20,1],"vertices":[2,51,36.95,33.31,0.91667,52,68.54,41.05,0.08333,2,51,66.02,20.36,0.76814,52,41.42,24.4,0.23186,2,51,74.51,16.58,0.64468,52,33.5,19.53,0.35532,2,51,70.89,21.97,0.29072,52,40,19.47,0.70928,3,51,42.78,63.9,0.11484,52,90.47,18.95,0.60855,60,-17.2,9.01,0.27661,2,52,101.86,18.84,0.45956,60,-14.39,20.05,0.54044,2,52,106.48,2.09,0.0625,60,2.98,20.56,0.9375,1,60,51.32,21.99,1,1,60,60.41,11.11,1,1,60,72.39,9.62,1,1,60,100.37,-23.87,1,1,60,104.96,-40.9,1,1,60,78.37,-25.62,1,1,60,86.06,-56.84,1,1,60,52.92,-30.05,1,2,52,62.25,-43.93,0.0625,60,37.19,-33.34,0.9375,2,52,64.89,-28.66,0.3125,60,22.99,-27.14,0.6875,2,52,57.7,-27.17,0.30612,60,19.84,-33.78,0.69388,2,51,124.19,3.84,0.19395,52,-5.1,-14.24,0.80605,2,51,110.78,-19.65,0.3125,52,-16.89,10.11,0.6875,2,51,99.15,-19.2,0.51614,52,-9.94,19.44,0.48386,2,51,43.73,-17.04,0.9375,52,23.18,63.93,0.0625,1,51,35.41,-29.78,1,1,51,-15.69,-28.02,1,1,51,-13.88,24.65,1],"hull":25}},"raptor-body":{"raptor/raptor-body":{"type":"mesh","uvs":[0.8907,0.10482,0.96887,0.19119,1,0.22559,1,0.42959,0.96605,0.42852,0.88729,0.42604,0.87568,0.48273,0.84333,0.51754,0.82904,0.55205,0.82121,0.60686,0.82251,0.70257,0.73186,0.8671,0.61644,0.92854,0.51981,0.91397,0.49661,0.90968,0.43941,0.70668,0.40192,0.67998,0.37208,0.6698,0.34675,0.65911,0.3241,0.65115,0.29383,0.64388,0.26897,0.63651,0.24305,0.62817,0.21492,0.61724,0.18738,0.6056,0.17121,0.59836,0.15588,0.59319,0.13906,0.59004,0.12523,0.58504,0.11128,0.58012,0.09712,0.57853,0.08453,0.57472,0.07159,0.57295,0.05793,0.57316,0.04447,0.57135,0.03052,0.57041,0.01776,0.57126,2.6E-4,0.57017,0,0.56366,0,0.55428,0.01552,0.54537,0.02851,0.53811,0.04362,0.52949,0.05682,0.5228,0.07055,0.51486,0.08274,0.50776,0.09638,0.50081,0.10907,0.49495,0.1233,0.48744,0.13991,0.47872,0.15649,0.46905,0.1721,0.45863,0.1889,0.45032,0.21568,0.43712,0.24053,0.42409,0.26662,0.40948,0.2977,0.3932,0.32692,0.38001,0.35247,0.36778,0.37649,0.35818,0.3999,0.34533,0.43709,0.32202,0.48969,0.35534,0.55807,0.39867,0.61175,0.40674,0.67137,0.4157,0.68415,0.31314,0.68674,0.14742,0.78179,0.08354,0.51486,0.74573,0.61952,0.75425,0.70113,0.7287,0.79523,0.27517,0.6532,0.59038,0.53789,0.54937,0.42895,0.52207,0.32783,0.50347,0.24422,0.51349,0.09755,0.54022,0.04399,0.55206,0.35306,0.50643,0.27085,0.50766,0.15671,0.52387,0.07104,0.54547,0.84225,0.21417,0.79908,0.17403,0.82032,0.25663,0.59601,0.57004,0.49108,0.53764,0.90134,0.22999,0.91501,0.20685,0.93008,0.22022,0.93356,0.25981,0.91919,0.27882,0.90621,0.26546,0.94034,0.26053,0.93493,0.21667,0.91642,0.19315,0.89354,0.22324,0.90268,0.28635,0.91967,0.28222,0.90644,0.2962,0.94715,0.26552,0.1892,0.51827,0.1253,0.5336,0.88854,0.26797,0.4035,0.50822,0.05761,0.54906,0.0172,0.55923,0.02978,0.5555,0.08455,0.54236,0.11122,0.53595,0.13948,0.52938,0.17229,0.52198,0.21679,0.51441,0.29918,0.50373,0.3782,0.50732,0.48861,0.73646,0.53095,0.82964,0.85765,0.31721,0.85355,0.37353,0.87689,0.32129,0.83122,0.32125,0.83889,0.41,0.84846,0.43147,0.75173,0.49519,0.7661,0.4385,0.77472,0.39174,0.74737,0.55212],"triangles":[8,125,7,7,126,124,7,124,6,124,126,123,6,124,5,124,123,5,123,120,5,120,121,5,120,123,122,123,127,122,120,122,119,107,33,79,34,109,79,33,34,79,36,38,108,36,108,35,108,109,35,34,35,109,36,37,38,38,39,108,39,40,108,108,40,109,40,41,109,109,41,79,41,42,79,79,42,107,42,43,107,30,31,78,78,31,110,110,31,83,32,33,107,107,83,32,31,32,83,107,43,83,110,83,44,83,43,44,78,110,45,110,44,45,78,45,46,27,28,112,112,28,104,28,29,104,30,78,29,78,111,29,29,111,104,111,78,46,104,111,47,111,46,47,112,104,48,104,47,48,112,48,49,24,25,103,103,25,113,25,26,113,113,26,82,27,112,26,26,112,82,82,112,49,113,82,50,82,49,50,103,113,51,113,50,51,103,51,52,22,23,77,77,23,114,23,24,114,114,24,103,114,103,52,77,114,53,114,52,53,77,53,54,20,21,115,115,21,81,21,22,81,81,22,77,81,77,54,115,81,55,81,54,55,115,55,56,18,19,80,19,20,76,19,76,80,76,20,115,80,57,58,76,115,56,56,57,76,80,76,57,116,106,17,17,18,116,116,18,80,106,59,60,116,58,59,106,116,59,116,80,58,106,75,16,15,16,75,16,17,106,61,75,60,60,75,106,15,117,14,69,117,74,74,15,88,74,117,15,88,15,75,74,88,63,88,75,63,63,75,62,61,62,75,4,2,3,4,121,101,101,102,4,2,4,1,4,5,121,127,72,122,127,66,72,120,119,121,101,121,99,119,122,86,122,72,86,99,121,105,121,119,105,119,86,105,66,67,72,101,100,102,95,102,92,92,102,93,101,99,100,99,93,100,99,94,93,99,105,94,93,102,100,93,94,92,72,85,86,72,67,85,86,84,105,105,89,94,105,98,89,105,84,98,102,1,4,94,89,92,95,91,96,102,95,96,102,96,1,89,91,92,95,92,91,86,85,84,89,90,91,89,98,90,90,98,97,91,90,96,90,97,96,96,97,1,97,98,84,0,97,84,84,85,0,97,0,1,67,68,85,85,68,0,128,73,125,65,125,73,128,125,8,125,126,7,125,65,126,126,127,123,126,65,127,127,65,66,11,71,10,71,9,10,71,128,9,71,73,128,9,128,8,13,118,12,12,70,11,12,118,70,70,71,11,118,69,70,69,87,70,70,73,71,70,87,73,87,69,74,87,64,65,87,74,64,65,73,87,74,63,64,118,13,117,118,117,69,117,13,14],"vertices":[1,8,150.46,-173.4,1,1,8,103.13,-273.12,1,1,8,84.28,-312.84,1,1,8,-31.97,-315.07,1,1,8,-32.18,-272.15,1,1,49,132.3,-5.43,1,1,49,139.96,-40.09,1,2,6,212.35,-93.85,0.24458,49,119.18,-80.5,0.75542,3,6,186.02,-98.37,0.36683,7,-16.62,-116.93,0.104,49,116.54,-107.08,0.52917,3,6,159.12,-117.04,0.51003,7,-49.15,-113.15,0.13653,49,127.38,-137.99,0.35343,2,6,127.06,-161.22,0.92701,7,-102.41,-125.11,0.07299,2,2,216.16,-140.78,0.35624,6,-20.95,-165.39,0.64376,3,1,85.73,-187.22,0.27847,2,71.69,-181.28,0.64389,6,-157.81,-103.92,0.07763,3,1,-35.83,-172.97,0.43431,2,-50.64,-177.64,0.31361,69,-66.53,167.75,0.25208,3,1,-64.98,-169.1,0.46475,2,-80.01,-176.31,0.22315,69,-38.7,177.24,0.3121,4,1,-131.54,-50.02,0.15053,69,73.86,100.15,0.48259,70,10.83,99.84,0.2923,71,-47.78,112.45,0.07458,5,1,-178.13,-32.52,0.06246,69,123.37,105.18,0.20925,70,60.43,95.83,0.34319,71,-0.14,98.07,0.28064,72,-65.15,98.07,0.10446,4,69,160.26,114.97,0.09233,70,98.48,98.8,0.24709,71,37.68,92.94,0.4141,72,-27.33,92.94,0.24649,4,70,131.05,100.18,0.12837,71,69.81,87.42,0.37711,72,4.8,87.42,0.37128,73,-53.39,91.74,0.12323,4,70,159.96,102.29,0.05413,71,98.52,83.38,0.25843,72,33.51,83.38,0.43127,73,-25.07,85.53,0.25617,4,71,136.84,79.9,0.1282,72,71.83,79.9,0.35967,73,12.87,79.15,0.38245,74,-57.66,79.15,0.12968,3,72,103.32,76.25,0.24826,73,43.99,73.11,0.46617,74,-26.54,73.11,0.28557,4,72,136.14,72.06,0.11054,73,76.4,66.45,0.36597,74,5.87,66.45,0.41283,75,-61.89,69.04,0.11066,3,73,111.51,58.15,0.23548,74,40.98,58.15,0.49589,75,-27.14,59.31,0.26863,3,73,145.85,49.49,0.10482,74,75.32,49.49,0.42875,75,6.82,49.25,0.46643,3,74,95.48,44.18,0.27382,75,26.74,43.12,0.61831,76,-35.66,43.73,0.10787,3,74,114.65,40.1,0.1288,75,45.73,38.26,0.61461,76,-16.75,38.55,0.25659,2,75,66.7,34.36,0.51566,76,4.15,34.29,0.48434,3,75,83.81,29.78,0.27667,76,21.18,29.43,0.61411,77,-33.93,28.67,0.10922,3,75,101.09,25.22,0.11761,76,38.38,24.58,0.62148,77,-16.63,24.21,0.26091,2,76,56.06,21.59,0.51073,77,1.11,21.62,0.48927,3,76,71.62,17.57,0.27823,77,16.75,17.95,0.6147,78,-32.34,18.15,0.10707,3,76,87.75,14.64,0.11765,77,32.95,15.39,0.61537,78,-16.16,15.49,0.26698,2,77,50.17,13.87,0.48399,78,1.05,13.87,0.51601,2,77,67.02,11.23,0.26531,78,17.88,11.12,0.73469,2,77,84.54,9.03,0.10722,78,35.39,8.81,0.89278,1,78,51.5,7.67,1,1,78,73.46,4.83,1,1,78,73.4,1.11,1,1,78,72.83,-4.22,1,1,78,52.8,-7.3,1,2,77,85.31,-9.54,0.10902,78,36.04,-9.77,0.89098,2,77,65.83,-12.63,0.2678,78,16.54,-12.74,0.7322,2,77,48.86,-14.84,0.48663,78,-0.44,-14.84,0.51337,3,76,85.2,-18.4,0.12171,77,31.15,-17.7,0.61472,78,-18.17,-17.59,0.26357,3,76,69.41,-20.61,0.28363,77,15.42,-20.27,0.61168,78,-33.92,-20.06,0.10469,2,76,51.82,-22.53,0.51571,77,-2.13,-22.58,0.48429,3,75,99.03,-23.36,0.1217,76,35.5,-23.97,0.62236,77,-18.41,-24.39,0.25594,3,75,80.7,-25.82,0.28356,76,17.14,-26.12,0.61067,77,-36.72,-26.95,0.10577,2,75,59.32,-28.67,0.52367,76,-4.3,-28.6,0.47633,3,74,109.73,-30.49,0.13166,75,37.92,-32.07,0.6201,76,-25.75,-31.64,0.24824,3,74,89.69,-35.26,0.2786,75,17.7,-36.02,0.62027,76,-46.03,-35.25,0.10114,3,73,138.73,-38.75,0.11364,74,68.2,-38.75,0.4282,75,-3.91,-38.62,0.45816,3,73,104.51,-44.28,0.25002,74,33.98,-44.28,0.49059,75,-38.33,-42.75,0.25939,4,72,141.32,-44.19,0.10836,73,72.73,-49.86,0.38463,74,2.2,-49.86,0.4034,75,-70.32,-47.02,0.10361,4,71,173.49,-53.09,0.05317,72,108.48,-53.09,0.23336,73,39.31,-56.24,0.45758,74,-31.22,-56.24,0.25589,4,71,134.4,-63.07,0.13574,72,69.39,-63.07,0.35761,73,-0.43,-63.22,0.39109,74,-70.96,-63.22,0.11556,4,70,191.72,-49.04,0.05282,71,97.62,-71.24,0.26817,72,32.61,-71.24,0.42391,73,-37.72,-68.58,0.2551,4,70,161.85,-63.21,0.13529,71,65.44,-78.79,0.38705,72,0.43,-78.79,0.35973,73,-70.38,-73.65,0.11793,3,70,133.53,-75.44,0.29932,71,35.17,-84.77,0.45298,72,-29.84,-84.77,0.2477,4,69,202.03,-68.6,0.08571,70,106.37,-89.31,0.24457,71,5.7,-92.6,0.51385,72,-59.31,-92.6,0.15587,5,2,-167.93,155.52,0.05783,69,164.28,-99.61,0.38789,70,63.63,-112.98,0.2592,71,-41.07,-106.71,0.24394,72,-106.08,-106.71,0.05114,2,2,-100.78,139.1,0.17623,69,95.76,-108.83,0.82377,3,2,-13.46,117.74,0.51552,69,6.67,-120.82,0.41991,70,-95.22,-105.33,0.06457,3,2,54.53,115.7,0.71641,6,19.32,135.09,0.16571,69,-57.38,-143.74,0.11788,4,2,130.03,113.44,0.21394,6,75.83,84.97,0.42016,7,21.89,93.48,0.27903,8,-32.04,100.39,0.08688,3,6,124.35,121.37,0.08109,7,82.36,88.71,0.27214,8,26.73,85.37,0.64677,1,8,121.24,83.9,1,1,8,159.95,-35.53,1,3,1,-37.38,-76.87,0.45731,2,-60.53,-82.04,0.14887,69,-22.43,82.35,0.39382,2,1,94.49,-88.2,0.1695,2,71.83,-81.88,0.8305,2,2,174.37,-63.42,0.34256,6,-3.45,-79.22,0.65744,2,7,130.25,-45.05,0.12976,8,51.07,-54.61,0.87024,2,2,110.85,13.08,0.80225,6,-3.21,20.21,0.19775,3,1,-2.83,33.51,0.13931,2,-35.68,30.92,0.27972,69,-4.33,-31.88,0.58097,3,69,128.08,9.01,0.256,70,47.67,0.4,0.51782,71,-32.75,7.48,0.22618,3,71,95.24,-0.88,0.27638,72,30.23,-0.88,0.45612,73,-34.75,1.77,0.2675,4,72,135.79,6.68,0.10554,73,71.08,1.28,0.38067,74,0.55,1.28,0.41246,75,-69.87,4.14,0.10133,2,76,52.98,-0.04,0.51268,77,-1.48,-0.08,0.48732,2,77,66.58,0.23,0.26199,78,17.37,0.12,0.73801,4,70,143.1,13.6,0.12991,71,63.32,0.25,0.38542,72,-1.69,0.25,0.36974,73,-66.49,5.32,0.11494,3,72,102.18,2.77,0.24383,73,37.27,-0.07,0.48113,74,-33.26,-0.07,0.27504,3,74,111.3,0.71,0.12458,75,40.76,-0.96,0.63251,76,-22.38,-0.58,0.24291,3,76,86.62,-1,0.11304,77,32.18,-0.27,0.62723,78,-17.04,-0.16,0.25972,2,8,86.97,-113.36,0.936,49,14.27,56.97,0.064,1,8,108.8,-58.38,1,1,8,62.24,-86.11,1,1,2,38.16,21.93,1,1,69,52.57,-14.31,1,1,8,79.39,-188.21,1,1,8,92.9,-205.24,1,1,8,85.65,-224.43,1,1,8,63.18,-229.26,1,1,8,51.99,-211.3,1,1,8,59.29,-194.75,1,1,8,62.94,-237.84,1,1,8,87.79,-230.52,1,1,8,100.75,-206.86,1,1,8,83.05,-178.28,1,1,8,47.3,-190.53,1,1,8,50.07,-211.95,1,1,8,41.78,-195.38,1,1,8,60.25,-246.5,1,3,73,140.63,-0.06,0.10402,74,70.1,-0.06,0.43142,75,-0.43,-0.04,0.46457,3,75,80.81,0.61,0.28111,76,17.69,0.32,0.61786,77,-36.77,-0.51,0.10103,1,8,57.43,-172.46,1,4,69,160.72,14.66,0.07294,70,80.79,0.05,0.52904,71,-0.45,0.15,0.29423,72,-65.46,0.15,0.1038,2,77,49.27,0.15,0.48779,78,0.06,0.15,0.51221,1,78,51.5,0.78,1,2,77,84.66,0.48,0.10205,78,35.46,0.26,0.89795,3,76,69.45,-0.76,0.2776,77,15,-0.42,0.62336,78,-34.21,-0.2,0.09904,3,75,98.66,0.16,0.11065,76,35.53,-0.44,0.63549,77,-18.92,-0.87,0.25385,2,75,62.75,0,0.51638,76,-0.38,0.01,0.48362,3,74,91.57,0.8,0.27488,75,21.06,-0.07,0.62473,76,-42.07,0.64,0.10039,3,73,105.71,-0.22,0.24009,74,35.18,-0.22,0.50187,75,-35.33,1.22,0.25804,4,71,131.44,-0.1,0.12721,72,66.43,-0.1,0.36421,73,1.41,-0.21,0.39171,74,-69.12,-0.21,0.11687,3,70,112.05,6.85,0.30035,71,31.55,0.2,0.4476,72,-33.46,0.2,0.25205,4,1,-70.27,-69.99,0.36182,2,-93.89,-78.03,0.10243,69,10.09,90.8,0.43318,70,-53.58,102.18,0.10256,3,1,-19.42,-125.63,0.38084,2,-38.41,-129.05,0.41913,69,-60.18,118.05,0.20002,2,8,28.63,-133.95,0.896,49,65.1,21.69,0.104,1,49,80.22,-7.1,1,1,8,26.77,-158.31,1,2,8,25.69,-100.6,0.14301,49,39.76,-0.2,0.85699,1,49,77.89,-34.86,1,1,49,94.91,-37.38,1,2,6,128.53,-12.98,0.23822,7,-3.31,-14.85,0.76178,2,7,31.85,-26.55,0.92786,49,14.06,-103.08,0.07214,3,7,60.08,-32.18,0.73794,8,-15.86,-29.96,0.18482,49,6.77,-75.22,0.07724,2,6,104.32,-35.29,0.42642,7,-36.22,-15.59,0.57358],"hull":69}},"raptor-front-arm":{"raptor/raptor-front-arm":{"type":"mesh","uvs":[0.39563,0.1396,0.38771,0.30213,0.31231,0.41784,0.27287,0.47836,0.33389,0.4507,0.5488,0.35329,0.64093,0.31153,0.73024,0.3653,1,0.5277,1,0.86607,0.93243,1,0.86176,0.80967,0.75576,0.99765,0.71748,1,0.70276,0.77443,0.62032,0.73448,0.58793,0.64519,0.53561,0.6582,0.13449,0.75798,0,0.69219,0.01846,0.56358,0.05499,0.30918,0,0.27863,0,0.12423,0,0,0.19596,0,0.40243,0,0.24536,0.19241,0.21679,0.0811],"triangles":[6,7,16,6,16,5,15,16,7,7,14,15,8,14,7,11,14,8,11,8,9,12,14,11,13,14,12,10,11,9,17,4,5,16,17,5,18,19,3,18,3,4,18,4,17,0,28,26,23,25,28,28,25,26,23,24,25,27,28,0,27,22,23,27,23,28,1,27,0,21,22,27,21,27,1,2,21,1,2,20,21,3,20,2,19,20,3],"vertices":[2,33,3.07,31.88,0.51075,6,66.56,-109.48,0.48925,1,33,35.87,35.63,1,2,33,60.94,27.12,0.84641,34,46.49,31.13,0.15359,2,33,74.06,22.67,0.34921,34,36.5,21.54,0.65079,3,33,67.01,31.59,0.10938,34,47.67,23.69,0.78125,43,-40.94,-19.44,0.10938,2,34,86.98,31.25,0.65079,43,-25.75,17.61,0.34921,2,34,103.84,34.49,0.34375,43,-19.24,33.5,0.65625,2,34,114.04,19.51,0.10938,43,-1.12,33.84,0.89063,1,43,53.62,34.88,1,1,43,96.03,-19.16,1,1,43,104.2,-47.32,1,1,43,71.34,-23.98,1,1,43,81.39,-64.61,1,1,43,76.81,-68.82,1,1,43,46.66,-34.26,1,2,34,73.14,-45.76,0.10938,43,31.14,-36.12,0.89063,2,34,73.98,-26.91,0.34375,43,15.82,-25.1,0.65625,2,34,65.11,-26.69,0.65079,43,10.78,-32.41,0.34921,3,33,133.56,9.13,0.10938,34,-2.94,-25.03,0.78125,43,-27.85,-88.47,0.10938,2,33,123.67,-14.43,0.34921,34,-19.29,-5.39,0.65079,2,33,97.41,-15.44,0.84641,34,-8.08,18.38,0.15359,1,33,45.47,-17.43,1,2,33,40.69,-27.18,0.45035,6,-1.69,-93.8,0.54965,2,33,-2.74,-29.64,0.44352,6,19,-72.94,0.55648,1,6,32.12,-48.46,1,1,6,57.57,-67.43,1,1,6,84.38,-87.42,1,2,33,16.44,5.22,0.71821,6,46.31,-101.87,0.28179,2,33,-4.52,5.32,0.48851,6,52.82,-81.95,0.51149],"hull":27}},"raptor-front-leg":{"raptor/raptor-front-leg":{"type":"mesh","uvs":[0.55117,0.17818,0.6279,0.36027,0.66711,0.4533,0.6488,0.51528,0.53554,0.56894,0.32335,0.66947,0.28674,0.72087,0.32539,0.80401,0.36258,0.80144,0.42056,0.79744,0.61015,0.78436,0.73352,0.81335,0.84813,0.84029,1,0.93855,0.732,0.92345,0.62439,0.91738,0.72813,1,0.58574,1,0.47086,0.98249,0.36708,0.96668,0.26307,0.95082,0.16267,0.93552,0.03859,0.72238,0,0.66947,0.0374,0.62999,0.1647,0.49563,0.23732,0.45681,0.2702,0.43923,0.28064,0.43365,0.223,0.40571,0.12565,0.35851,0,0.2976,0,0.1524,0,0,0.32132,0,0.32222,0.22778,0.44931,0.38031,0.47664,0.44362,0.4615,0.47375,0.35106,0.53247,0.20091,0.65257,0.18528,0.72148,0.25222,0.86314,0.30942,0.88124,0.55694,0.89613,0.55858,0.89208,0.47493,0.8534,0.6059,0.91526,0.39706,0.8913,0.1323,0.09352,0.36997,0.45346,0.37163,0.43828,0.32516,0.39424,0.2376,0.34426,0.34066,0.47415,0.51677,0.90503,0.07821,0.26333,0.05796,0.13086,0.09601,0.05963,0.29303,0.03825],"triangles":[46,9,10,45,46,10,44,46,45,55,46,44,15,47,45,10,15,45,44,45,47,55,44,47,11,15,10,14,15,11,14,11,12,14,12,13,48,8,9,48,9,46,48,43,8,48,46,55,19,43,48,20,43,19,18,48,55,19,48,18,17,55,47,18,55,17,17,47,15,16,17,15,22,24,41,23,24,22,42,41,6,42,6,7,43,42,7,43,7,8,21,22,41,21,41,42,20,42,43,21,42,20,50,28,51,27,28,50,38,51,37,50,51,38,54,27,50,26,27,54,3,37,2,38,37,3,39,54,50,39,50,38,4,38,3,39,38,4,40,25,26,24,25,40,39,40,26,39,26,54,5,40,39,5,39,4,6,40,5,41,24,40,41,40,6,59,34,0,34,58,33,59,58,34,49,58,59,57,33,58,57,58,49,32,33,57,56,57,49,32,57,56,35,59,0,49,59,35,56,49,35,31,32,56,53,56,35,30,56,53,31,56,30,36,35,0,36,0,1,52,53,35,36,52,35,29,30,53,29,53,52,28,29,52,51,52,36,28,52,51,37,36,1,51,36,37,37,1,2],"vertices":[2,37,128.03,88.47,0.85041,1,158.83,-71.92,0.14959,2,37,219.55,53.15,0.77988,38,-48.05,-38.59,0.22012,2,37,266.31,35.11,0.53545,38,-36.73,10.22,0.46455,2,37,286.89,9.8,0.35167,38,-14.56,34.15,0.64833,2,37,281.55,-41.24,0.09228,38,36.71,36,0.90772,3,37,271.54,-136.86,0.05787,38,132.77,39.48,0.71426,39,35,78.76,0.22788,3,38,158.22,55.17,0.5308,39,52.66,54.64,0.38143,40,7.02,85.54,0.08776,5,38,167.14,99.49,0.21499,39,97.55,49.25,0.35358,40,28.72,45.88,0.14221,41,-21.26,49.99,0.22491,42,-72.3,25.96,0.06432,5,38,154.23,105.56,0.07538,39,102.57,62.61,0.23051,40,42.51,49.56,0.28379,41,-7.07,51.4,0.27005,42,-58.17,28.03,0.14027,4,39,109.72,83.4,0.11607,40,64.09,55.24,0.08124,41,15.13,53.52,0.36962,42,-36.1,31.19,0.43307,1,42,35.81,41.81,1,1,42,83.66,29.43,1,1,42,128.11,17.93,1,1,42,188.73,-29.42,1,2,41,145.37,-10.99,0.34248,42,84.02,-27.11,0.65752,2,41,93.3,-7.6,0.48,42,44.87,-26.18,0.52,2,41,133.18,-49.83,0.776,42,86.69,-66.48,0.224,2,41,78.79,-50.15,0.768,42,32.38,-69.36,0.232,2,41,35.36,-41.46,0.88989,42,-9.88,-62.73,0.11011,1,41,-4.92,-33.56,1,3,39,155.05,-5.14,0.35918,40,17.88,-32.51,0.30633,41,-44.62,-25.61,0.3345,4,38,254.98,126.28,0.10155,39,131.22,-36.21,0.54212,40,-21.25,-31.18,0.20873,41,-83.02,-17.98,0.1476,3,38,240.34,7.81,0.25587,39,11.94,-30.99,0.61615,40,-86.32,68.91,0.12798,2,38,239.27,-23.1,0.45486,39,-18.96,-32.37,0.54514,3,37,187.65,-209.74,0.09777,38,216.67,-33.36,0.58893,39,-30.98,-10.65,0.3133,2,37,163.86,-128.68,0.19603,38,139.75,-68.26,0.80397,2,37,165.75,-94.49,0.31963,38,105.59,-71.26,0.68037,2,37,166.4,-79.07,0.46225,38,90.23,-72.77,0.53775,2,37,166.49,-74.17,0.53786,38,85.43,-73.29,0.46214,2,37,141.54,-82.47,0.73138,38,97.13,-96.82,0.26862,2,37,99.76,-97.08,0.85324,38,117.34,-136.23,0.14676,2,37,45.01,-114.56,0.83615,1,-51.09,-135.29,0.16385,1,1,-42.95,-58.39,1,1,1,-52.66,17.56,1,1,1,70.07,18.78,1,1,37,93.55,4.14,1,2,37,185.14,-6.67,0.75462,38,15.99,-64.28,0.24539,2,37,217.11,-18.75,0.50845,38,23.47,-30.93,0.49155,2,37,225.64,-32.92,0.32528,38,36.31,-20.51,0.67472,2,37,223,-84.74,0.20193,38,87.97,-15.86,0.79807,3,37,235.62,-168.07,0.08091,38,168.7,8.29,0.57148,39,6.75,40.47,0.34761,3,38,191.8,35.81,0.32545,39,36.01,19.63,0.57243,40,-31.15,78.74,0.10211,4,38,206.64,111.54,0.10808,39,112.69,10.83,0.52068,40,6.26,11.23,0.23518,41,-49.03,19.43,0.13606,3,39,130.61,26.42,0.35068,40,29.36,5.72,0.28241,41,-27.13,10.26,0.36691,2,41,67.47,3.17,0.384,42,18.56,-16.63,0.616,1,42,19.07,-14.52,1,2,41,36.01,24.95,0.384,42,-13.89,3.64,0.616,2,41,86.23,-6.55,0.488,42,37.76,-25.46,0.512,4,38,164.9,153.55,0.02264,39,151.19,56,0.23908,40,65.44,5.56,0.19254,41,8.45,4.28,0.54574,2,37,-9.28,-17.51,0.22806,1,7.72,-30.86,0.77194,2,37,195.91,-53.82,0.42369,38,61.12,-47.06,0.57631,2,37,190.1,-48.45,0.53231,38,56.62,-53.56,0.46769,2,37,161.27,-48.26,0.79874,38,60.44,-82.13,0.20126,2,37,120.38,-58.54,0.85455,38,76.31,-121.19,0.14545,2,37,197.37,-69.23,0.3355,38,76.18,-43.47,0.6645,5,38,131.21,175.78,0.00966,39,167.22,97.41,0.10203,40,97.38,0.84,0.08217,41,54.09,-2.79,0.51264,42,4.74,-23.22,0.29349,3,37,49.5,-83.17,0.6783,1,-17.26,-114.16,0.27193,38,110.66,-187.93,0.04977,3,37,-9.83,-51.31,0.41821,1,-21.43,-46.95,0.58033,38,87.4,-251.12,0.00145,2,37,-31.44,-20.43,0.27617,1,-6.57,-12.31,0.72383,2,37,0.92,47.46,0.41417,1,68.18,-4.06,0.58583],"hull":35}},"raptor-hindleg-back":{"raptor/raptor-hindleg-back":{"type":"mesh","uvs":[0.45041,0.09352,0.56934,0.23361,0.65294,0.47297,0.66354,0.50822,0.63175,0.54255,0.32384,0.69723,0.30069,0.73876,0.27934,0.77704,0.30417,0.83513,0.31059,0.85014,0.34101,0.85047,0.45165,0.85164,0.59556,0.81882,0.91177,0.92548,1,1,0.56337,0.96427,0.4835,0.98261,0.29879,0.98027,0.22808,0.98389,0.15998,0.98738,0.15424,0.95547,0.13895,0.87048,0.07371,0.78726,0,0.753,0,0.7049,0,0.671,0.11876,0.64653,0.16535,0.5266,0.28496,0.47398,0.29011,0.45774,0.29427,0.4446,0.20635,0.40396,0.06129,0.33691,0,0.25247,0,0,0.30793,0,0.276,0.20262,0.40398,0.31122,0.48439,0.45964,0.48318,0.48384,0.47029,0.51062,0.22698,0.67328,0.17142,0.7242,0.17122,0.78242,0.22996,0.89469,0.24677,0.90829,0.28672,0.9146,0.46583,0.91414],"triangles":[15,13,14,16,47,15,15,12,13,15,47,12,18,46,17,18,45,46,17,47,16,17,46,47,47,10,11,47,46,10,47,11,12,45,18,19,44,45,20,20,45,19,20,21,44,46,9,10,46,45,9,45,44,9,21,43,44,44,8,9,44,7,8,44,43,7,21,22,43,43,22,42,43,42,7,22,23,24,24,42,22,7,42,6,42,41,6,6,41,5,24,26,42,42,26,41,24,25,26,5,40,4,5,41,40,41,28,40,26,27,41,41,27,28,40,39,4,28,29,40,40,29,39,4,39,3,39,2,3,29,30,39,39,38,2,39,30,38,38,1,2,30,37,38,38,37,1,30,31,37,31,36,37,31,32,36,32,33,36,37,0,1,37,36,0,33,34,36,36,35,0,36,34,35],"vertices":[1,55,53.94,69.16,1,1,55,126.23,67.31,1,2,55,226.42,31.14,0.9375,56,-30.88,-1.11,0.0625,2,55,240.84,25.33,0.7,56,-25.65,13.52,0.3,2,55,246.67,8.06,0.3,56,-8.61,20.02,0.7,3,55,240.82,-115.25,0.0625,56,114.81,19.01,0.875,57,9.48,59.16,0.0625,2,56,131.07,29.69,0.7,57,22.12,44.36,0.3,2,56,146.07,39.54,0.3,57,33.76,30.71,0.7,3,56,152.6,65.01,0.12567,57,59.85,27.41,0.75203,58,15.86,48.05,0.1223,3,56,154.29,71.6,0.05444,57,66.6,26.56,0.78402,58,16.73,41.31,0.16154,3,57,71.2,35.76,0.64716,58,26.79,39.17,0.1317,59,-67.33,18.96,0.22114,3,57,87.93,69.21,0.0625,58,63.37,31.39,0.675,59,-30.18,23.3,0.2625,2,58,113.82,35.72,0.10381,59,16.23,43.56,0.89619,1,59,128.14,12.02,1,1,59,161.85,-15.82,1,2,58,90.99,-23.36,0.01381,59,13.52,-19.72,0.98619,2,58,62.98,-25.82,0.7,59,-12.23,-31.02,0.3,3,57,115.12,-1.34,0.08333,58,1.94,-12.66,0.83333,59,-74.27,-38.11,0.08333,2,57,106.11,-23.53,0.3,58,-21.81,-9.53,0.7,2,57,97.44,-44.91,0.7,58,-44.67,-6.51,0.3,2,57,84.26,-40.69,0.9375,58,-43.91,7.3,0.0625,1,57,49.19,-29.47,1,2,56,206.75,5.37,0.13333,57,7.44,-33.78,0.86667,2,56,219.64,-20.52,0.36111,57,-16.64,-49.81,0.63889,2,56,208.41,-37.83,0.72083,57,-35.22,-40.82,0.27917,2,56,200.49,-50.03,0.91667,57,-48.31,-34.49,0.08333,1,56,161.11,-36.98,1,2,55,150.1,-116.77,0.08333,56,119.88,-71.55,0.91667,2,55,154.99,-70.72,0.42846,56,73.68,-68.48,0.57154,2,55,150.31,-65.27,0.35605,56,68.43,-73.37,0.64395,2,55,146.52,-60.87,0.59148,56,64.18,-77.33,0.40852,2,55,115.13,-75.09,0.8446,56,79.61,-108.13,0.1554,1,55,63.33,-98.54,1,1,55,21.78,-94.56,1,1,55,-66.69,-32.05,1,1,55,-6.63,52.97,1,1,55,58.15,-6.01,1,1,55,121.17,2.44,1,1,55,188.87,-12.1,1,2,55,197.12,-18.43,0.7,56,19.79,-28.44,0.3,2,55,203.99,-28.62,0.3,56,29.7,-21.18,0.7,1,56,136.67,-7.43,1,2,56,164.32,0.67,0.7,57,-2.53,7.74,0.3,2,56,177.98,21.58,0.25,57,19.92,-3.2,0.75,1,57,71.94,-6.3,1,2,57,79.66,-3.72,0.7,58,-9.29,21.05,0.3,2,57,87.98,7.26,0.3125,58,3.43,15.76,0.6875,3,57,114.17,61.85,0.04,58,62.84,4.16,0.7,59,-21.96,-2.67,0.26],"hull":36}},"raptor-horn":{"raptor/raptor-horn":{"x":156.21,"y":74.11,"rotation":-137.26,"width":363,"height":159}},"raptor-horn-back":{"raptor/raptor-horn-back":{"x":121.43,"y":83.01,"rotation":-132.22,"width":351,"height":153}},"raptor-jaw":{"raptor/raptor-jaw":{"type":"mesh","uvs":[0.40985,0.2217,0.42215,0.3988,0.67895,0.53819,0.75891,0.62838,0.83469,0.585,0.81705,0.81244,0.63281,0.94488,0.39908,0.96947,0.19457,0.89404,0.2161,0.6497,0,0.46112,0,0,0.26069,0,0.19457,0.29385,0.60678,0.81243,0.42896,0.88938],"triangles":[13,11,12,10,11,13,13,12,0,13,0,1,9,13,1,10,13,9,14,1,2,14,2,3,9,1,14,5,3,4,14,3,5,15,9,14,8,9,15,6,14,5,15,14,6,7,8,15,7,15,6],"vertices":[1,49,28.6,68.86,1,1,49,69.66,38.95,1,1,49,150.72,72.89,1,1,49,186.17,74.8,1,1,49,191.66,100.45,1,1,49,237.78,54.27,1,1,49,230.32,-13.08,1,1,49,189.56,-72,1,1,49,132.76,-105.61,1,1,49,83.72,-55.39,1,2,49,-21.32,-87.34,0.32267,8,-19.53,-0.74,0.67733,1,8,113.45,16.95,1,1,8,116.37,-62.49,1,1,49,1.86,5.44,1,1,49,196.29,5.37,1,1,49,177.99,-50.23,1],"hull":13}},"raptor-jaw-inside":{"raptor/raptor-jaw":{"type":"mesh","uvs":[0.55999,0.75741,0.43054,0.61202,0.33622,0.50344,0.42215,0.3988,0.67895,0.53819,0.75891,0.62838,0.83469,0.585,0.82502,0.70963,0.77983,0.76564,0.68254,0.81468],"triangles":[1,3,4,2,3,1,7,5,6,0,1,4,0,4,5,8,5,7,9,0,5,8,9,5],"vertices":[89.41,-11.77,32.16,-14.98,-10.13,-16.83,-15.99,22.52,65.07,56.46,100.52,58.37,106.01,84.02,131.28,58.71,134.58,37.84,126.08,6.14],"hull":10}},"raptor-mouth-inside":{"raptor/raptor-mouth-inside":{"type":"mesh","uvs":[1,0.29017,0.37217,1,0,1,0,0,1,0],"triangles":[1,2,3,0,1,3,3,4,0],"vertices":[1,8,26.56,-211.68,1,1,49,130.45,-7.83,1,1,49,109.72,-24.21,1,1,8,47.22,-139.7,1,1,8,50.33,-210.63,1],"hull":5}},"raptor-saddle-noshadow":{"raptor/raptor-saddle-noshadow":{"x":80.84,"y":10.63,"rotation":-88.65,"width":326,"height":375}},"raptor-saddle-strap-front":{"raptor/raptor-saddle-strap-front":{"x":128.83,"y":-4.72,"rotation":61.29,"width":114,"height":189}},"raptor-saddle-strap-rear":{"raptor/raptor-saddle-strap-rear":{"type":"mesh","uvs":[0.855,0.06803,1,0.13237,1,0.20266,0.95982,0.26524,0.88584,0.38045,0.80684,0.46413,0.74038,0.53454,0.81676,0.58951,0.51962,1,0.45161,1,0.01739,0.84071,0,0.8089,0.24646,0.3664,0.37921,0.39151,0.42457,0.32099,0.49229,0.21571,0.57673,0.10986,0.66437,0,0.70169,0,0.56029,0.46322,0.68822,0.29773,0.76846,0.18722,0.6153,0.39206],"triangles":[7,8,6,9,10,13,13,11,12,6,8,19,8,9,19,9,13,19,13,10,11,19,22,6,13,14,19,19,14,22,6,22,5,22,20,5,5,20,4,14,15,22,22,15,20,20,21,4,15,16,20,4,21,3,20,16,21,2,3,0,3,21,0,0,1,2,21,16,18,16,17,18,21,18,0],"vertices":[1,63,3.91,-3.27,1,1,63,4.25,15.05,1,1,63,13.24,20.29,1,2,63,23.43,21.2,0.7,64,-15.2,21.22,0.3,3,63,41.12,22.88,0.3,64,2.49,22.9,0.6375,65,-33.83,24.97,0.0625,3,63,52.07,21.72,0.0625,64,13.44,21.75,0.6375,65,-22.98,23.12,0.3,2,64,18.39,20.76,0.25,65,-18.1,21.82,0.75,1,65,-18.76,33.09,1,1,65,49.93,31.57,1,1,65,53.21,25,1,1,65,53.11,-27.49,1,1,65,49.74,-31.27,1,1,65,-20.74,-36.77,1,1,65,-23.83,-22.28,1,3,63,53.48,-24.62,0.0625,64,14.85,-24.6,0.575,65,-24.52,-23.22,0.3625,3,63,41.45,-26.12,0.3,64,2.81,-26.1,0.6375,65,-36.62,-23.95,0.0625,2,63,24.38,-26.12,0.7,64,-14.25,-26.1,0.3,1,63,5.57,-26.13,1,1,63,3.54,-22.65,1,1,65,-23.09,-0.04,1,2,63,41.67,-1.73,0.3125,64,3.03,-1.7,0.6875,2,63,23.85,-2.47,0.7,64,-14.78,-2.45,0.3,2,64,13.95,-1.5,0.64583,65,-23.94,-0.11,0.35417],"hull":19}},"raptor-saddle-w-shadow":{"raptor/raptor-saddle-w-shadow":{"type":"mesh","uvs":[0.29849,0.09165,0.25764,0.13843,0.32431,0.28893,0.45069,0.49094,0.56076,0.52519,0.69936,0.49802,0.71567,0.41179,0.83797,0.32673,0.91271,0.31019,1,0.48621,1,0.58072,0.93717,0.76264,0.88417,0.87014,0.73741,0.92212,0.28898,0.87014,0.16257,0.80317,0.10295,0.69443,0.10449,0.63657,0.2315,0.61431,0.10559,0.39199,0,0.35689,0,0.27026,0.11186,0,0.17021,0,0.24413,0,0.46427,0.84179,0.56755,0.84415,0.94668,0.62443,0.9263,0.39407,0.2137,0.18682,0.18239,0.28963,0.21653,0.33824,0.32307,0.44535,0.38606,0.52911,0.39069,0.55971,0.36568,0.6032,0.38235,0.62414,0.43979,0.65474,0.53891,0.67729,0.62321,0.6789,0.70381,0.65555,0.74827,0.62655,0.78996,0.58387,0.80571,0.53233,0.79737,0.50334,0.75661,0.47515,0.72789,0.47837,0.20634,0.08376,0.17577,0.12886,0.13686,0.18765,0.11185,0.28751,0.17762,0.36321,0.26192,0.46066,0.30546,0.50012,0.31565,0.55488,0.79181,0.69018,0.86592,0.60562,0.89927,0.50817,0.84925,0.44294,0.81868,0.39462],"triangles":[47,23,24,47,24,0,47,22,23,1,47,0,48,47,1,29,48,1,48,49,22,47,48,22,49,48,29,21,22,49,50,21,49,29,1,2,30,49,29,30,29,2,50,49,30,31,30,2,20,21,50,51,50,30,51,30,31,19,20,50,19,50,51,8,9,28,7,8,28,59,7,28,59,6,7,58,59,28,32,31,2,3,32,2,52,31,32,51,31,52,45,6,59,45,59,58,46,6,45,46,5,6,53,52,32,33,53,32,44,45,58,57,58,28,57,28,9,44,58,57,3,33,32,43,44,57,54,53,33,34,33,3,54,33,34,57,9,10,46,44,43,44,46,45,35,54,34,56,43,57,27,56,57,42,43,56,52,19,51,18,52,53,18,53,54,18,19,52,36,35,34,10,27,57,46,42,5,43,42,46,41,5,42,37,34,3,37,3,4,36,34,37,40,5,41,4,5,40,38,37,4,39,38,4,40,39,4,55,42,56,41,42,55,11,56,27,55,56,11,11,27,10,18,16,17,15,16,18,25,37,38,26,25,38,39,26,38,18,36,14,35,18,54,36,18,35,14,36,37,14,37,25,15,18,14,12,55,11,55,13,40,55,40,41,13,55,12,39,40,13,26,39,13,25,26,13,14,25,13],"vertices":[232.38,79.91,214.53,92.81,158.62,69.75,83.86,26.78,71.86,-9.39,83.11,-54.33,115.57,-58.88,148.39,-97.99,155.17,-122.2,89.85,-152.2,54.42,-153.04,-14.27,-134.17,-54.97,-117.85,-75.59,-70.47,-59.55,76.13,-35.41,117.92,4.9,138.32,26.6,138.32,35.92,97.13,118.3,140.13,130.65,174.85,163.13,175.61,265.31,141.55,265.76,122.53,266.32,98.44,-47.57,19.25,-47.66,-14.43,37.62,-136.05,123.83,-127.37,196.05,106.7,157.27,116,139.3,104.44,99.97,68.78,69.05,47.51,57.62,45.73,41.12,53.49,33.4,47.88,22.37,28.89,14.67,-3.62,14.72,-31.11,24.09,-57.17,35.3,-71.4,51.62,-84.61,71.07,-89.29,81.87,-86.32,92.13,-72.78,90.7,-63.45,234.63,110.01,217.49,119.58,195.15,131.74,157.52,139.01,129.65,116.9,93.76,88.57,79.3,74.03,58.85,70.23,11.79,-86.16,44.06,-109.56,80.84,-119.57,104.91,-102.69,122.79,-92.3],"hull":25}},"raptor-tongue":{"raptor/raptor-tongue":{"type":"mesh","uvs":[0.35242,0.21561,0.4794,0.44246,0.62072,0.61177,0.80563,0.75374,1,0.90297,1,1,0.8971,1,0.72055,0.92255,0.50668,0.82872,0.30402,0.70725,0.10537,0.57889,0,0.50622,0,0,0.26225,0],"triangles":[8,7,6,6,4,5,4,6,3,6,7,3,7,8,3,8,2,3,9,10,1,8,9,2,9,1,2,1,10,0,10,11,0,0,12,13,0,11,12],"vertices":[2,79,3.64,27.05,0.6875,80,-47.27,33.88,0.3125,3,79,39.1,19.46,0.3125,80,-13.42,20.87,0.625,81,-51.54,33.38,0.0625,3,79,71.56,19.03,0.0625,80,18.59,15.4,0.625,81,-21.56,20.92,0.3125,2,80,55.03,16.86,0.3125,81,14.29,14.24,0.6875,2,80,93.34,18.4,0.08333,81,51.98,7.21,0.91667,1,81,56.09,-4.51,1,2,80,85.07,-1.49,0.08333,81,39.49,-10.33,0.91667,2,80,54.23,-9.18,0.3125,81,7.71,-10.97,0.6875,3,79,75.14,-14.72,0.0625,80,16.87,-18.5,0.625,81,-30.77,-11.74,0.3125,3,79,38.8,-25.81,0.3125,80,-20.75,-23.8,0.625,81,-68.63,-8.54,0.0625,2,79,2.4,-35.78,0.6875,80,-58.25,-27.99,0.3125,2,79,-17.29,-40.63,0.91667,80,-78.46,-29.72,0.08333,1,79,-59.92,8.19,1,2,79,-26.14,37.69,0.91667,80,-75.02,49.02,0.08333],"hull":14}},"raptow-jaw-tooth":{"raptor/raptor-jaw-tooth":{"x":217.25,"y":97.37,"rotation":49.5,"width":73,"height":96}},"spineboy-torso":{"raptor/torso":{"x":55.88,"y":4.87,"rotation":-104.14,"width":108,"height":182}},"stirrup-back":{"raptor/stirrup-back":{"x":53.2,"y":31.34,"rotation":-21.13,"width":87,"height":69}},"stirrup-front":{"raptor/stirrup-front":{"x":36.14,"y":20.39,"rotation":-21.13,"width":89,"height":100}},"stirrup-strap":{"raptor/stirrup-strap":{"type":"mesh","uvs":[0.36823,0.27894,0.45738,0.38897,0.54452,0.49652,0.67872,0.59135,0.81977,0.69102,1,0.77344,1,1,0.77957,1,0.6373,0.8163,0.53364,0.72349,0.40534,0.60861,0.30886,0.52535,0.2105,0.44048,0,0.26245,0,0,0.30637,0,0.20242,0.23001],"triangles":[2,10,1,9,10,2,9,2,3,8,9,3,8,3,4,7,8,4,7,4,5,7,5,6,16,14,15,13,14,16,16,15,0,12,16,0,12,0,1,13,16,12,11,12,1,10,11,1],"vertices":[2,67,24.72,8.04,0.80345,68,-17.42,11.02,0.19655,2,67,37.95,8.04,0.59979,68,-4.37,8.87,0.40021,2,67,50.88,8.05,0.36895,68,8.39,6.77,0.63105,2,67,65.92,12.27,0.17748,68,23.92,8.48,0.82252,2,67,81.73,16.71,0.05943,68,40.24,10.28,0.94057,2,67,98.83,25.04,0.0121,68,58.47,15.72,0.9879,2,67,114.44,11.58,0.00191,68,71.67,-0.11,0.99809,2,67,100.47,-4.61,0.01818,68,55.25,-13.81,0.98182,2,67,78.8,-4.14,0.07488,68,33.95,-9.81,0.92512,2,67,65.83,-6.24,0.2028,68,20.81,-9.77,0.7972,2,67,49.79,-8.84,0.39972,68,4.56,-9.71,0.60028,2,67,37.94,-10.97,0.62658,68,-7.48,-9.89,0.37342,2,67,25.86,-13.15,0.82035,68,-19.76,-10.07,0.17965,2,67,0.25,-18.03,0.95289,68,-45.82,-10.7,0.04711,2,67,-17.84,-2.43,0.9771,68,-61.11,7.64,0.0229,2,67,1.58,20.07,0.94775,68,-38.29,26.68,0.05225,2,67,10.84,-1.24,0.9771,68,-32.63,4.14,0.0229],"hull":16}},"tail-shadow":{"raptor/raptor-tail-shadow":{"type":"mesh","uvs":[1,0.50387,0.89276,1,0.82069,0.96993,0.72927,0.92231,0.64083,0.87624,0.54988,0.83667,0.47106,0.80022,0.40123,0.7783,0.32238,0.75321,0.25301,0.73107,0.20375,0.71883,0.11753,0.71414,0,0.72519,0,0.66338,0.10358,0.57282,0.18201,0.5128,0.23534,0.47512,0.30555,0.4281,0.37968,0.37769,0.44858,0.3281,0.51987,0.2798,0.61007,0.21367,0.70725,0.14608,0.80109,0.08082,0.90134,0],"triangles":[10,11,14,13,14,11,10,14,15,12,13,11,9,10,15,8,9,16,9,15,16,8,16,17,7,8,17,6,7,18,7,17,18,6,18,19,5,6,19,4,20,21,4,5,20,5,19,20,2,22,23,3,21,22,4,21,3,3,22,2,23,24,0,23,0,2,1,2,0],"vertices":[1,73,-0.16,6.41,1,2,73,43.27,66.87,0.7548,74,-27.26,66.87,0.2452,2,73,70.22,61.76,0.53679,74,-0.31,61.76,0.46321,3,73,104.36,54.09,0.13235,74,33.83,54.09,0.82952,75,-34.46,55.55,0.03813,3,73,137.38,46.66,0.00439,74,66.85,46.66,0.62467,75,-1.77,46.78,0.37094,3,74,100.85,40.01,0.0995,75,31.93,38.73,0.87982,76,-30.54,39.26,0.02068,3,74,130.31,33.97,4.6E-4,75,61.12,31.5,0.57172,76,-1.48,31.52,0.42782,2,75,87.09,26.38,0.04275,76,24.4,25.98,0.95725,2,76,53.62,19.67,0.64526,77,-1.28,19.64,0.35474,2,76,79.33,14.11,0.00246,77,24.54,14.67,0.99754,2,77,42.92,11.57,0.84959,78,-6.22,11.61,0.15041,1,78,26.1,8.09,1,1,78,70.35,5.47,1,1,78,69.65,-2.28,1,1,78,29.73,-10.12,1,2,77,48.91,-14.99,0.57427,78,-0.4,-14.98,0.42573,1,77,28.47,-18.03,1,2,76,55.57,-21.74,0.40024,77,1.6,-21.71,0.59976,3,75,90.66,-24.62,0.00715,76,27.1,-25.08,0.98709,77,-26.78,-25.69,0.00576,2,75,64.22,-28.51,0.5083,76,0.61,-28.53,0.4917,3,74,108.73,-30.63,0.01005,75,36.91,-32.16,0.9784,76,-26.76,-31.72,0.01155,2,74,74.35,-37.29,0.50429,75,2.29,-37.41,0.49571,3,73,107.88,-44.01,0.04245,74,37.35,-44.01,0.94684,75,-34.96,-42.61,0.01071,2,73,72.14,-50.49,0.52154,74,1.61,-50.49,0.47846,2,73,33.89,-58.82,0.93522,74,-36.64,-58.82,0.06478],"hull":25}},"visor":{"raptor/visor":{"x":99.13,"y":6.51,"rotation":-70.58,"width":261,"height":168}}}},"animations":{"gun-grab":{"slots":{"front-hand":{"attachment":[{"time":0,"name":"raptor/front-open-hand"},{"time":0.2333,"name":"raptor/gun"}]},"gun":{"attachment":[{"time":0.2333,"name":null}]}},"bones":{"front-hand2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":12.34},{"time":0.2333,"angle":-89.55,"curve":"stepped"},{"time":0.2667,"angle":-89.55},{"time":0.3333,"angle":-79.79},{"time":0.6667,"angle":-10.18}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":0.938,"y":0.938},{"time":0.6667,"x":1,"y":1}]},"front-arm":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-32},{"time":0.2333,"angle":223.11,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":155.19,"curve":[0.25,0,0.75,1]},{"time":0.5333,"angle":246.14,"curve":[0.184,0.34,0.75,1]},{"time":0.6667,"angle":-56.75}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":6.5,"y":-2.66},{"time":0.3333,"x":6.84,"y":4.8},{"time":0.6667,"x":0,"y":0}]},"front-bracer":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":86.02,"curve":"stepped"},{"time":0.2667,"angle":86.02},{"time":0.3333,"angle":114.95},{"time":0.5333,"angle":81.86,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":34.74}]}},"ik":{"front-arm-goal":[{"time":0,"mix":0}]}},"gun-holster":{"slots":{"front-hand":{"attachment":[{"time":0,"name":"raptor/gun"},{"time":0.3,"name":"raptor/front-open-hand"},{"time":0.6667,"name":"raptor/front-hand"}]},"gun":{"attachment":[{"time":0,"name":null},{"time":0.3,"name":"raptor/gun-nohand"}]}},"bones":{"front-hand2":{"rotate":[{"time":0,"angle":-10.18},{"time":0.1667,"angle":-88.65},{"time":0.3,"angle":-89.52},{"time":0.4667,"angle":-35.36},{"time":0.6667,"angle":0.18}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":0.888,"y":0.888}]},"front-arm":{"rotate":[{"time":0,"angle":-56.75},{"time":0.1667,"angle":162.12},{"time":0.3,"angle":216.91},{"time":0.4667,"angle":200.21},{"time":0.6667,"angle":-25.24}],"translate":[{"time":0,"x":0,"y":0}]},"front-bracer":{"rotate":[{"time":0,"angle":34.74},{"time":0.1667,"angle":97.01},{"time":0.3,"angle":97.41},{"time":0.4,"angle":99.27},{"time":0.4667,"angle":116.1}]}},"ik":{"front-arm-goal":[{"time":0,"mix":0,"curve":"stepped"},{"time":0.4667,"mix":0},{"time":0.6667,"mix":0.996}]}},"jump":{"slots":{"dust01":{"color":[{"time":0.9667,"color":"ffffff00"},{"time":1.0667,"color":"fffffffe"},{"time":1.3333,"color":"ffffff00"}],"attachment":[{"time":0.9667,"name":"raptor/dust01"},{"time":1.0667,"name":"raptor/dust02"},{"time":1.1667,"name":"raptor/dust03"}]},"dust1":{"color":[{"time":0.4,"color":"ffffff00"},{"time":0.5,"color":"fffffffe"},{"time":0.8667,"color":"ffffff00","curve":"stepped"},{"time":1,"color":"ffffff00"},{"time":1.1,"color":"fffffffe"},{"time":1.3667,"color":"ffffff00"}],"attachment":[{"time":0.4,"name":"raptor/dust01"},{"time":0.5,"name":"raptor/dust02"},{"time":0.6333,"name":"raptor/dust03"},{"time":1,"name":"raptor/dust01"},{"time":1.1,"name":"raptor/dust02"},{"time":1.2,"name":"raptor/dust03"}]},"dust2":{"color":[{"time":0.9333,"color":"cdcdcd00"},{"time":1.0333,"color":"ccccccfe"},{"time":1.3,"color":"cccccc00"}],"attachment":[{"time":0.9333,"name":"raptor/dust01"},{"time":1.0333,"name":"raptor/dust02"},{"time":1.1333,"name":"raptor/dust03"}]},"dust3":{"color":[{"time":0.4,"color":"cccccc00"},{"time":0.5,"color":"ccccccfe"},{"time":0.8667,"color":"cccccc00","curve":"stepped"},{"time":1,"color":"cccccc00"},{"time":1.1,"color":"ccccccfe"},{"time":1.4667,"color":"cccccc00"}],"attachment":[{"time":0.4,"name":"raptor/dust01"},{"time":0.5,"name":"raptor/dust02"},{"time":0.6333,"name":"raptor/dust03"},{"time":1,"name":"raptor/dust01"},{"time":1.1,"name":"raptor/dust02"},{"time":1.2333,"name":"raptor/dust03"}]},"mouth-smile":{"attachment":[{"time":0.1333,"name":"raptor/mouth-grind"},{"time":0.9,"name":"raptor/mouth-smile"}]}},"bones":{"front-foot-goal":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3,"angle":0},{"time":0.4,"angle":-41.64},{"time":0.4667,"angle":-69.67},{"time":0.5333,"angle":-12.81},{"time":0.6667,"angle":5.74},{"time":0.9667,"angle":0}],"translate":[{"time":0,"x":0,"y":36.5,"curve":"stepped"},{"time":0.4,"x":0,"y":36.5},{"time":0.4333,"x":-51.5,"y":55.55},{"time":0.4667,"x":-134.04,"y":111.1},{"time":0.5,"x":-128.33,"y":165.93},{"time":0.5333,"x":-12.99,"y":277.66},{"time":0.6667,"x":243.74,"y":685.02,"curve":[0.55,0,0.928,0.67]},{"time":0.9667,"x":95.94,"y":36.5}]},"hip":{"rotate":[{"time":0,"angle":-4.48},{"time":0.1333,"angle":-23.03},{"time":0.4,"angle":19.24,"curve":[0.228,0.46,0.75,1]},{"time":0.6667,"angle":31.43},{"time":0.9667,"angle":-10.76},{"time":1.0667,"angle":-18.59},{"time":1.2333,"angle":3.45},{"time":1.3667,"angle":-4.48}],"translate":[{"time":0,"x":-100.65,"y":49.77},{"time":0.1333,"x":9.38,"y":-109.07,"curve":[0.246,0,0.609,0.42]},{"time":0.2667,"x":150.37,"y":-76.51,"curve":[0.401,0.34,0.858,0.88]},{"time":0.4,"x":361.01,"y":36.69},{"time":0.6667,"x":5.37,"y":486.67,"curve":[0.665,0,0.883,0.6]},{"time":0.9667,"x":-82.29,"y":108.4},{"time":1.0667,"x":84.63,"y":-79.01},{"time":1.1333,"x":181,"y":-57.13},{"time":1.2333,"x":238.12,"y":50.64,"curve":[0.25,0,0.75,1]},{"time":1.3667,"x":213.2,"y":49.77}]},"rear-foot-goal":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3,"angle":0},{"time":0.4,"angle":-41.64},{"time":0.4667,"angle":-69.67},{"time":0.5333,"angle":-57.97},{"time":1,"angle":-9.2},{"time":1.0333,"angle":-7.79}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.4333,"x":-87.33,"y":23.79},{"time":0.4667,"x":-172.24,"y":47.59},{"time":0.5,"x":-205.57,"y":86.83},{"time":0.5333,"x":-176.81,"y":207.15},{"time":0.6667,"x":61.3,"y":639.9,"curve":[0.651,0.41,0.756,0.91]},{"time":1.0333,"x":235.63,"y":0}]},"front-leg-goal":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.4667,"x":-11.12,"y":1.13},{"time":0.5,"x":35.48,"y":8.27},{"time":0.5333,"x":6.65,"y":-19.6},{"time":0.6667,"x":-46.09,"y":-54.23},{"time":1,"x":-0.4,"y":24.3},{"time":1.0667,"x":0,"y":0}]},"rear-leg-goal":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.4667,"x":22.17,"y":54.94},{"time":0.5,"x":38.22,"y":65.55},{"time":0.5333,"x":20.12,"y":-2.63},{"time":0.6667,"x":-3.59,"y":-12.74},{"time":1,"x":-43,"y":-42.05},{"time":1.0667,"x":-29.03,"y":-3.97}]},"tail1":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-11.02},{"time":0.4,"angle":0.53},{"time":0.5333,"angle":8.64},{"time":1,"angle":-9.74},{"time":1.0667,"angle":-4.46,"curve":[0.243,0,0.649,1]},{"time":1.3667,"angle":0}]},"tail3":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-9.81},{"time":0.2333,"angle":-22.06},{"time":0.3,"angle":-26.63},{"time":0.4,"angle":-17.42},{"time":0.5333,"angle":-6.59},{"time":0.6667,"angle":1.28},{"time":0.8667,"angle":-7.23},{"time":1,"angle":-12.78},{"time":1.0667,"angle":-12.03},{"time":1.1,"angle":-11.94},{"time":1.1667,"angle":-4.94},{"time":1.3667,"angle":0}]},"torso2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":0.52},{"time":0.4,"angle":-1.91},{"time":0.6667,"angle":3},{"time":1,"angle":-3.26},{"time":1.0667,"angle":4.82},{"time":1.3667,"angle":0}]},"front-arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-308.79},{"time":0.5,"angle":-398.7},{"time":0.7667,"angle":-297.81},{"time":1,"angle":62.19},{"time":1.0667,"angle":-325.37},{"time":1.1333,"angle":-374.43},{"time":1.3667,"angle":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-5.01},{"time":0.4,"angle":-7.26},{"time":0.6667,"angle":10.19},{"time":1,"angle":24.02},{"time":1.0667,"angle":4.83},{"time":1.1667,"angle":-1.79},{"time":1.3667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-23.92,"y":-8.77,"curve":[0.146,0.61,0.75,1]},{"time":0.4,"x":29.55,"y":-17.63},{"time":0.6667,"x":8.9,"y":-2.9},{"time":1,"x":0,"y":0},{"time":1.0667,"x":52.78,"y":-42.59},{"time":1.1667,"x":27.85,"y":-19.16}]},"rear-arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":51.21},{"time":0.5333,"angle":-38.7},{"time":0.8667,"angle":62.19,"curve":"stepped"},{"time":1.0333,"angle":62.19},{"time":1.1,"angle":34.63},{"time":1.1667,"angle":-14.43},{"time":1.3667,"angle":0}]},"spineboy-hip":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":40.49,"y":-30.56},{"time":0.3333,"x":53.35,"y":-66.67},{"time":0.4,"x":38.42,"y":-79.98},{"time":0.5667,"x":48.41,"y":-88.19},{"time":0.6667,"x":46.33,"y":-75.54},{"time":1,"x":41.71,"y":-19.46},{"time":1.1667,"x":0,"y":0}]},"tail5":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":7.22},{"time":0.2333,"angle":-10.93},{"time":0.3,"angle":-14.58},{"time":0.4,"angle":-5.79},{"time":0.5333,"angle":5.75},{"time":0.5667,"angle":8.65},{"time":0.6333,"angle":17.01},{"time":0.6667,"angle":11.44},{"time":0.8667,"angle":8.39},{"time":1,"angle":3.54},{"time":1.0667,"angle":-20.69},{"time":1.1,"angle":-22.16},{"time":1.1667,"angle":-18.9},{"time":1.2667,"angle":-10.15},{"time":1.3667,"angle":0}]},"front-arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":23.11},{"time":0.5,"angle":-75.93},{"time":0.7667,"angle":-1.41},{"time":1.0667,"angle":26.87},{"time":1.1333,"angle":-56.15},{"time":1.3667,"angle":0}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":15.28},{"time":0.4,"angle":-53.41},{"time":0.7667,"angle":-63.35},{"time":1.0667,"angle":-29.92},{"time":1.2,"angle":7.24},{"time":1.3,"angle":-3.7},{"time":1.3667,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":22.2,"curve":[0.25,0,0.75,1]},{"time":0.2333,"angle":-11.5,"curve":[0.483,0,0.686,1]},{"time":0.4333,"angle":10.27},{"time":0.6667,"angle":-40.57,"curve":[0.145,0.48,0.75,1]},{"time":1,"angle":-23.3},{"time":1.0667,"angle":21.8},{"time":1.1667,"angle":15.37},{"time":1.3667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.4333,"x":23.4,"y":-54.02},{"time":0.6667,"x":26.32,"y":-20.79},{"time":1,"x":19.04,"y":1.7}]},"rear-arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":23.11},{"time":0.5,"angle":-75.93},{"time":0.7667,"angle":-1.41},{"time":1.0667,"angle":26.87},{"time":1.1333,"angle":-56.15},{"time":1.3667,"angle":0}]},"spineboy-torso":{"rotate":[{"time":0,"angle":-4.78},{"time":0.1333,"angle":-36.59},{"time":0.2667,"angle":-24.94},{"time":0.3333,"angle":-20.34},{"time":0.6667,"angle":-11.2},{"time":1,"angle":10.49},{"time":1.1333,"angle":-30.21,"curve":[0.25,0,0.75,1]},{"time":1.3,"angle":-17.91},{"time":1.3667,"angle":-31.12}]},"tail7":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":14.46},{"time":0.2333,"angle":20.19},{"time":0.3,"angle":-12.08},{"time":0.4,"angle":-13.06},{"time":0.5333,"angle":7.14},{"time":0.5667,"angle":23.54},{"time":0.6667,"angle":9.86},{"time":0.8667,"angle":10.31},{"time":1,"angle":6.72},{"time":1.0667,"angle":-11.17},{"time":1.1,"angle":-16.51},{"time":1.1667,"angle":-11.98},{"time":1.2667,"angle":-8.74},{"time":1.3667,"angle":0}]},"front-foot2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0},{"time":0.4333,"angle":-28.28},{"time":0.4667,"angle":-40.52},{"time":0.5333,"angle":-67.11},{"time":0.6667,"angle":-16.7},{"time":0.9667,"angle":24.85},{"time":1.0667,"angle":0}]},"front-hand":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-27.75},{"time":1.0667,"angle":-27.1},{"time":1.3667,"angle":0}]},"jaw":{"rotate":[{"time":0,"angle":0.83},{"time":0.1333,"angle":3.45},{"time":0.3333,"angle":-3.98},{"time":0.4667,"angle":-10.78,"curve":[0.609,0,0.75,1]},{"time":0.9,"angle":2.06},{"time":0.9333,"angle":-3.14},{"time":1.2333,"angle":0.83}],"translate":[{"time":0,"x":-10.21,"y":13.96}]},"rear-foot2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0},{"time":0.4333,"angle":-18.7},{"time":0.4667,"angle":-28.34},{"time":0.5333,"angle":-126.75},{"time":0.6667,"angle":-63.79},{"time":0.9333,"angle":11.7},{"time":1,"angle":24.85},{"time":1.0667,"angle":0}]},"rear-hand":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-27.75},{"time":1.0667,"angle":-27.1},{"time":1.3667,"angle":0}]},"tail9":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":10.15},{"time":0.2333,"angle":21.25},{"time":0.3,"angle":-7.52},{"time":0.4,"angle":-13.06},{"time":0.5333,"angle":10.6},{"time":0.5667,"angle":23.27},{"time":0.6667,"angle":9.49},{"time":0.8667,"angle":23.25},{"time":1,"angle":16.01},{"time":1.0667,"angle":-11.17},{"time":1.1,"angle":-17.02},{"time":1.1667,"angle":-22.43},{"time":1.2667,"angle":-13.57},{"time":1.3667,"angle":0}]},"front-foot3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0},{"time":0.4333,"angle":8.47},{"time":0.4667,"angle":3.02},{"time":0.5333,"angle":-19.17},{"time":0.6667,"angle":-15.11},{"time":0.9667,"angle":10.78},{"time":1.0667,"angle":0}]},"head2":{"rotate":[{"time":0,"angle":18.08},{"time":0.1333,"angle":44.55},{"time":0.3,"angle":23.94},{"time":0.4,"angle":16.51},{"time":0.6333,"angle":11.09},{"time":0.9667,"angle":7.01},{"time":1.0667,"angle":26.78},{"time":1.1333,"angle":31.89},{"time":1.2333,"angle":16.95},{"time":1.3,"angle":30.99},{"time":1.3667,"angle":31.09}]},"neck2":{"rotate":[{"time":0,"angle":-0.77},{"time":0.1333,"angle":15.96},{"time":0.3,"angle":5.09},{"time":0.4,"angle":-2.34},{"time":0.6333,"angle":-7.76},{"time":0.9667,"angle":-11.84},{"time":1.0667,"angle":7.94},{"time":1.1333,"angle":13.05},{"time":1.2333,"angle":-1.91},{"time":1.3667,"angle":12.24}]},"front-arm-target":{"translate":[{"time":0,"x":-0.43,"y":-9.01},{"time":0.1333,"x":-27.62,"y":9.05},{"time":0.2667,"x":10.24,"y":-25.26},{"time":0.4,"x":16.65,"y":-40.28},{"time":0.5,"x":12.66,"y":-34.61},{"time":0.6667,"x":2.73,"y":-3.04},{"time":0.9667,"x":-6.56,"y":0.7},{"time":1.0667,"x":12.25,"y":-29.51}]},"front-hand2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-22.27},{"time":0.2667,"angle":-16.91},{"time":0.4333,"angle":-2.22},{"time":0.6667,"angle":-6.95}]},"stirrup":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-13.39,"curve":"stepped"},{"time":0.9667,"angle":-13.39},{"time":1.2333,"angle":0}]},"spineboy-front-arm-goal":{"translate":[{"time":0.2667,"x":0,"y":0},{"time":0.4333,"x":19.72,"y":-2.18},{"time":0.5333,"x":19.39,"y":-3.07},{"time":0.6667,"x":-3.87,"y":6.01},{"time":1.0667,"x":-10.92,"y":4.87},{"time":1.3667,"x":0,"y":0}]},"dust":{"translate":[{"time":0.9667,"x":-65.56,"y":0,"curve":[0.188,0.23,0.75,1]},{"time":1.3333,"x":275,"y":0}],"scale":[{"time":0.9333,"x":1,"y":1},{"time":1.2,"x":0.404,"y":0.404}]},"dust2":{"translate":[{"time":0.4,"x":73.55,"y":0,"curve":[0.386,0.6,0.75,1]},{"time":0.8667,"x":-373.31,"y":44.37,"curve":"stepped"},{"time":1,"x":73.55,"y":0,"curve":[0.263,0.3,0.75,1]},{"time":1.4333,"x":-130.91,"y":0}],"scale":[{"time":0.4,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.8667,"x":0.834,"y":0.834,"curve":"stepped"},{"time":1.1,"x":1,"y":1},{"time":1.3667,"x":0.404,"y":0.404}]},"tail2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-6.06},{"time":0.3,"angle":-7.05},{"time":0.4,"angle":4.7},{"time":0.5333,"angle":-1.99},{"time":1,"angle":-0.83},{"time":1.0667,"angle":-3.56},{"time":1.1,"angle":-7.07},{"time":1.1667,"angle":-6.46}]},"tail4":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":5.9},{"time":0.2333,"angle":-2.65},{"time":0.3,"angle":-3.31},{"time":0.4,"angle":0.99},{"time":0.5333,"angle":7.03},{"time":1,"angle":5.36},{"time":1.0667,"angle":-0.43},{"time":1.1,"angle":-3.37},{"time":1.1667,"angle":-2.18},{"time":1.2667,"angle":3.65}]},"tail6":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":20.13},{"time":0.2333,"angle":-3.52},{"time":0.3,"angle":-4.18},{"time":0.4,"angle":-11.91},{"time":0.5333,"angle":4.01},{"time":0.5667,"angle":8.34},{"time":0.8667,"angle":5.66},{"time":1,"angle":9.81},{"time":1.0667,"angle":-15.56},{"time":1.1,"angle":-18.28},{"time":1.1667,"angle":-10.86},{"time":1.2667,"angle":3.69}]},"tail8":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":14.81},{"time":0.2333,"angle":17.13},{"time":0.3,"angle":-10.98},{"time":0.4,"angle":-14.47},{"time":0.5333,"angle":4.33},{"time":0.5667,"angle":13.57},{"time":0.8667,"angle":9.11},{"time":1,"angle":9.41},{"time":1.0667,"angle":-15.96},{"time":1.1,"angle":-20.19},{"time":1.1667,"angle":-23.17},{"time":1.2667,"angle":-11.89}]},"tail10":{"rotate":[{"time":0,"angle":6.72},{"time":0.1333,"angle":0.52},{"time":0.2333,"angle":10.93},{"time":0.3,"angle":-7.46},{"time":0.4,"angle":-12.6},{"time":0.5333,"angle":11.74},{"time":1,"angle":3.35},{"time":1.0667,"angle":-22.02},{"time":1.1,"angle":-26.24},{"time":1.1667,"angle":-29.22},{"time":1.2667,"angle":-17.95}]},"dust4":{"translate":[{"time":0.4,"x":-32.73,"y":0,"curve":[0.263,0.3,0.75,1]},{"time":0.8667,"x":-342.03,"y":56.39,"curve":"stepped"},{"time":1,"x":-32.73,"y":0,"curve":[0.263,0.3,0.75,1]},{"time":1.5667,"x":-241.95,"y":10.37}],"scale":[{"time":0.5,"x":1,"y":1},{"time":0.8667,"x":0.748,"y":0.748,"curve":"stepped"},{"time":1.1,"x":1,"y":1},{"time":1.4667,"x":0.748,"y":0.748}]},"dust3":{"translate":[{"time":0.9333,"x":-65.56,"y":0,"curve":[0.188,0.23,0.75,1]},{"time":1.3,"x":275,"y":0}],"scale":[{"time":1.0333,"x":1,"y":1},{"time":1.3,"x":0.404,"y":0.404}]},"saddle-strap-rear1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.99},{"time":0.2667,"angle":-2.13},{"time":0.5333,"angle":1.36},{"time":0.9333,"angle":-1.8},{"time":1.3333,"angle":-0.3},{"time":1.4333,"angle":0}]},"saddle-strap-rear2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4},{"time":0.2667,"angle":-2.14},{"time":0.5333,"angle":1.35},{"time":0.9333,"angle":-1.81},{"time":1.3333,"angle":-0.32},{"time":1.4333,"angle":0}]},"saddle-strap-rear3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4},{"time":0.2667,"angle":-2.14},{"time":0.5333,"angle":1.35},{"time":0.9333,"angle":-1.81},{"time":1.3333,"angle":-0.32},{"time":1.4333,"angle":0}]},"rear-leg1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.4667,"x":-12.67,"y":-22.45},{"time":0.9,"x":0,"y":0}]},"bone3":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":3.16},{"time":0.1667,"angle":-7.3},{"time":0.2667,"angle":14.19},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":-1.88},{"time":0.7667,"angle":2.1},{"time":0.9667,"angle":8.65},{"time":1.0333,"angle":-10.01},{"time":1.1,"angle":-14.96},{"time":1.1667,"angle":2.21},{"time":1.2333,"angle":6.21},{"time":1.3,"angle":1.14},{"time":1.4,"angle":-2.77}]},"bone4":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":3.16},{"time":0.1667,"angle":-7.3},{"time":0.2667,"angle":14.19},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":-1.88},{"time":0.7667,"angle":2.1},{"time":0.9667,"angle":8.65},{"time":1.0333,"angle":-10.01},{"time":1.1,"angle":-14.96},{"time":1.1667,"angle":2.21},{"time":1.2333,"angle":6.21},{"time":1.3,"angle":1.14},{"time":1.4,"angle":-2.77}]},"bone5":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":3.16},{"time":0.1667,"angle":-7.3},{"time":0.2667,"angle":14.19},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":-1.88},{"time":0.7667,"angle":2.1},{"time":0.9667,"angle":8.65},{"time":1.0333,"angle":-10.01},{"time":1.1,"angle":-14.96},{"time":1.1667,"angle":2.21},{"time":1.2333,"angle":6.21},{"time":1.3,"angle":1.14},{"time":1.4,"angle":-2.77}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":3.16},{"time":0.1667,"angle":-7.3},{"time":0.2667,"angle":14.19},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":-1.88},{"time":0.7667,"angle":2.1},{"time":0.9667,"angle":8.65},{"time":1.0333,"angle":-10.01},{"time":1.1,"angle":-14.96},{"time":1.1667,"angle":2.21},{"time":1.2333,"angle":6.21},{"time":1.3,"angle":1.14},{"time":1.4,"angle":-2.77}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":3.16},{"time":0.1667,"angle":-7.3},{"time":0.2667,"angle":14.19},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":-1.88},{"time":0.7667,"angle":2.1},{"time":0.9667,"angle":8.65},{"time":1.0333,"angle":-10.01},{"time":1.1,"angle":-14.96},{"time":1.1667,"angle":2.21},{"time":1.2333,"angle":6.21},{"time":1.3,"angle":1.14},{"time":1.4,"angle":-2.77}]}},"deform":{"default":{"raptor-body":{"raptor/raptor-body":[{"time":0},{"time":0.1333,"offset":458,"vertices":[1.74036,-2.22608,-9.63611,-4.39496,-10.76492,-2.17071,-0.30984,2.6773,10.09714,4.32944,10.52585,2.19383]},{"time":0.3333},{"time":0.4333,"offset":458,"vertices":[6.3717,-3.87701,-0.64294,-10.32703,-8.98572,-4.46783,-8.53622,6.94458,1.49112,10.1131,8.55499,4.55597,0,0,0,0,0,0,5.49994,-1.16241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6.2113,0.53571]},{"time":1.0333}]}}}},"roar":{"slots":{"mouth-smile":{"attachment":[{"time":0.6,"name":"raptor/mouth-grind"},{"time":1.4333,"name":"raptor/mouth-smile"}]}},"bones":{"hip":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.2,"angle":-27.34,"curve":[0.334,0.4,0.656,0.73]},{"time":0.3,"angle":-22.37,"curve":[0.45,0.09,0.724,0.65]},{"time":0.5333,"angle":-3.36},{"time":0.6,"angle":-5.46},{"time":0.6667,"angle":-0.43},{"time":1.5667,"angle":-12.77,"curve":[0.295,0,0.521,0.96]},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.817,0.01,0.75,1]},{"time":0.2,"x":-225.6,"y":-78.54,"curve":[0.334,0.4,0.657,0.73]},{"time":0.3,"x":-339.74,"y":-70.39,"curve":[0.475,0,0.793,0.67]},{"time":0.5333,"x":-121.06,"y":-146.24},{"time":0.6,"x":-9.1,"y":-87.2},{"time":0.6667,"x":44.98,"y":-13.34},{"time":0.7333,"x":41.57,"y":-6.52},{"time":0.8,"x":44.98,"y":-13.34},{"time":0.8667,"x":41.57,"y":-6.52,"curve":[0.25,0,0.75,1]},{"time":1.2333,"x":48.94,"y":-29.36,"curve":[0.574,0.03,0.619,0.76]},{"time":1.5667,"x":-127.64,"y":26.21,"curve":[0.36,0.01,0.701,0.55]},{"time":1.7333,"x":-45.45,"y":70.65,"curve":[0.355,0.39,0.69,0.76]},{"time":1.8,"x":-25.54,"y":44.36,"curve":[0.056,0.99,0.683,0.64]},{"time":2,"x":0,"y":0}]},"torso2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":0.52},{"time":0.6,"angle":-22.13},{"time":1.5667,"angle":0.52},{"time":1.8,"angle":0}]},"spineboy-torso":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-12.47},{"time":0.3,"angle":-37.77},{"time":0.4,"angle":-51.05},{"time":0.5,"angle":-59.08},{"time":0.6,"angle":-73.34},{"time":0.6667,"angle":-74.18},{"time":0.8,"angle":-68.39},{"time":0.8667,"angle":-67.25},{"time":1.1,"angle":-62.14},{"time":1.2,"angle":-64.59},{"time":1.3667,"angle":-50.19},{"time":1.5667,"angle":-12.47},{"time":1.8,"angle":0}]},"head2":{"rotate":[{"time":0,"angle":12.98},{"time":0.2,"angle":29.86},{"time":0.3,"angle":38.44},{"time":0.6,"angle":42.77},{"time":0.7,"angle":46.69},{"time":0.8667,"angle":45.89},{"time":1.2,"angle":45.61},{"time":1.2667,"angle":42.06},{"time":1.3667,"angle":48.76},{"time":1.5667,"angle":29.86},{"time":1.8,"angle":0},{"time":2,"angle":12.98}]},"neck2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":11.08},{"time":0.6,"angle":37.25},{"time":1.2,"angle":33.93},{"time":1.3667,"angle":27.8},{"time":1.5667,"angle":11.08},{"time":1.8,"angle":0}]},"front-arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":25.6,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"angle":-393.29},{"time":0.6667,"angle":-379.24},{"time":0.8333,"angle":-388.76},{"time":1.3667,"angle":-18.16},{"time":1.8,"angle":-346.22},{"time":2,"angle":0}]},"front-arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":23.11,"curve":[0.331,0.42,0.647,0.74]},{"time":0.4333,"angle":-9.34,"curve":[0.311,0.38,0.639,0.7]},{"time":0.5,"angle":-5.4,"curve":[0.287,0.38,0.611,0.69]},{"time":0.6,"angle":-52.61},{"time":0.7667,"angle":-65.84},{"time":1.0333,"angle":-39.95},{"time":1.3667,"angle":-67.86},{"time":1.8,"angle":-8.99},{"time":2,"angle":0}]},"front-hand":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-7.24},{"time":0.5,"angle":-25.8},{"time":0.6,"angle":33.41},{"time":0.7667,"angle":52.51},{"time":1.4,"angle":-30.97},{"time":1.5667,"angle":-7.24},{"time":1.8,"angle":0}]},"rear-arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":23.11,"curve":[0.324,0.45,0.628,0.76]},{"time":0.4333,"angle":-2.44,"curve":[0.3,0.38,0.628,0.7]},{"time":0.5333,"angle":-22.11,"curve":[0.307,0.35,0.638,0.68]},{"time":0.6,"angle":-77.6},{"time":0.7667,"angle":-66.07},{"time":1.3667,"angle":-58.31},{"time":1.8,"angle":-8.99},{"time":2,"angle":0}]},"rear-hand":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-7.24},{"time":0.4333,"angle":-36},{"time":0.6,"angle":10.34},{"time":0.7667,"angle":55.96},{"time":1.2333,"angle":8.39},{"time":1.8,"angle":0}]},"rear-arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":51.21,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"angle":-19.18},{"time":0.7667,"angle":-25.79},{"time":1.3667,"angle":-3.03},{"time":1.8,"angle":13.78},{"time":2,"angle":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-8.26,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"angle":13.44},{"time":1.5667,"angle":-8.26,"curve":[0.28,0.54,0.53,0.78]},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-19.98,"y":-1.45,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"x":35.7,"y":-47.38},{"time":1.4667,"x":2.83,"y":-4.9},{"time":1.5667,"x":12.18,"y":3.64},{"time":1.8,"x":2.83,"y":-4.9},{"time":2,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":9.94,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"angle":23.25},{"time":0.7333,"angle":24.85},{"time":0.9333,"angle":25.3},{"time":1.3667,"angle":27.9},{"time":1.5667,"angle":12,"curve":[0.237,0.4,0.587,0.72]},{"time":1.6667,"angle":11.92,"curve":[0.293,0.42,0.69,0.67]},{"time":1.9,"angle":0}],"translate":[{"time":0.2,"x":0,"y":0,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"x":12.3,"y":-89.23},{"time":0.6667,"x":18.74,"y":-87.42},{"time":0.7333,"x":16.57,"y":-87.92},{"time":0.8,"x":18.74,"y":-87.42},{"time":0.8667,"x":16.57,"y":-87.92},{"time":0.9333,"x":18.74,"y":-87.42},{"time":1.3667,"x":27.31,"y":-84.9},{"time":1.5667,"x":0,"y":0}]},"jaw":{"rotate":[{"time":0,"angle":-1.2},{"time":0.2,"angle":1.83},{"time":0.4333,"angle":-13.72},{"time":0.6,"angle":304.71},{"time":0.7333,"angle":-49.51},{"time":0.7667,"angle":-47.49},{"time":0.8,"angle":-45.13},{"time":0.8333,"angle":-43.73},{"time":0.8667,"angle":-43.36},{"time":0.9,"angle":-40.64},{"time":0.9333,"angle":-42.02,"curve":[0.775,0.06,0.821,0.7]},{"time":1.4,"angle":-17.61},{"time":1.5667,"angle":-8.79,"curve":[0.28,0.54,0.53,0.78]},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":-3.44,"y":2.51},{"time":0.2,"x":0,"y":0,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"x":-19.47,"y":17.94},{"time":0.6667,"x":-30.92,"y":23.07},{"time":1.5667,"x":-3.44,"y":2.51}]},"tongue1":{"rotate":[{"time":0.1667,"angle":16.25},{"time":0.2,"angle":15.93,"curve":[0.33,0.42,0.644,0.74]},{"time":0.3333,"angle":-0.58,"curve":[0.27,0.42,0.581,0.72]},{"time":0.5,"angle":5.31},{"time":0.6,"angle":-4.66},{"time":0.6667,"angle":5.7},{"time":0.7,"angle":13.7},{"time":0.8333,"angle":16.75},{"time":1,"angle":15.1},{"time":1.1,"angle":17.24},{"time":1.2667,"angle":2.26},{"time":1.5667,"angle":32.1,"curve":[0.28,0.54,0.53,0.78]},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":-22.37,"y":13.32}],"scale":[{"time":0.2,"x":1,"y":1},{"time":0.5667,"x":1.16,"y":1},{"time":0.7,"x":1.413,"y":1},{"time":0.8333,"x":1.632,"y":1},{"time":1.5667,"x":1,"y":1}]},"torso1":{"rotate":[{"time":0.6,"angle":0},{"time":0.6667,"angle":-6.14},{"time":0.7333,"angle":-3.57},{"time":0.8,"angle":-6.14},{"time":0.8667,"angle":-3.57},{"time":1,"angle":3.56},{"time":1.3667,"angle":-6.11},{"time":1.5667,"angle":0}]},"horn-rear":{"rotate":[{"time":0.2,"angle":0},{"time":1,"angle":7.62},{"time":1.8,"angle":0}]},"horn-front":{"rotate":[{"time":0.2,"angle":0},{"time":1,"angle":7.62},{"time":1.8,"angle":0}]},"front-leg-goal":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":94.98,"y":17.68,"curve":"stepped"},{"time":0.1667,"x":94.98,"y":17.68},{"time":0.3,"x":-61.43,"y":-80.97,"curve":[0.591,0.02,0.565,0.73]},{"time":0.6,"x":54.8,"y":26.89},{"time":0.6667,"x":104.34,"y":47.28},{"time":1.2333,"x":126.91,"y":52.57,"curve":[0.452,0.26,0.698,0.49]},{"time":1.5667,"x":49.5,"y":28.71},{"time":2,"x":0,"y":0}]},"rear-leg-goal":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-40.46,"y":-17.34,"curve":[0.33,0.42,0.644,0.74]},{"time":0.4333,"x":-39.15,"y":-5.5,"curve":[0.27,0.42,0.581,0.72]},{"time":0.6,"x":17.09,"y":42.26},{"time":1.2333,"x":31.18,"y":60.17,"curve":[0.452,0.26,0.698,0.49]},{"time":1.5667,"x":-19.04,"y":19.62},{"time":2,"x":0,"y":0}]},"spineboy-hip":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":35.97,"y":-11.83},{"time":0.3,"x":42.12,"y":-39.3},{"time":0.4333,"x":48.96,"y":-59.92},{"time":0.5,"x":48.85,"y":-52.7},{"time":0.6,"x":49.06,"y":-51.25},{"time":0.6667,"x":56.03,"y":-56.03},{"time":0.7333,"x":43.66,"y":-49.87},{"time":0.8,"x":42.93,"y":-49.25},{"time":0.8667,"x":34.13,"y":-41.42},{"time":1,"x":43.1,"y":-52.61},{"time":1.2667,"x":53.82,"y":-63.04},{"time":1.3667,"x":60.15,"y":-45.04},{"time":1.5667,"x":35.97,"y":-11.83},{"time":1.8,"x":0,"y":0}]},"front-hand2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-21.93},{"time":0.3,"angle":-23.29},{"time":0.4,"angle":-29.8},{"time":0.5,"angle":-36.62},{"time":0.6,"angle":-40.49},{"time":0.6667,"angle":-38.28},{"time":0.7333,"angle":-33.33},{"time":0.8,"angle":-28.06},{"time":1.3,"angle":-27.17},{"time":1.4,"angle":-27.62},{"time":1.5667,"angle":0}]},"front-arm-target":{"translate":[{"time":0.2,"x":0,"y":0},{"time":0.6,"x":42.84,"y":-71.37},{"time":0.8,"x":23.9,"y":-69.35},{"time":1.3,"x":21.13,"y":-48.34},{"time":1.4,"x":17.74,"y":-52.7},{"time":1.5667,"x":0,"y":0}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":15.28},{"time":0.3333,"angle":-13.87},{"time":0.4,"angle":-40.91,"curve":[0.761,0,0.95,0.87]},{"time":0.6,"angle":-15.61},{"time":0.6667,"angle":-43.39,"curve":[0.45,0,0.75,1]},{"time":0.7333,"angle":-25.56},{"time":1,"angle":-23.42},{"time":1.1667,"angle":-21.64},{"time":1.3667,"angle":-27.73},{"time":1.5667,"angle":-6.38},{"time":1.7,"angle":-14.44},{"time":1.8,"angle":0},{"time":1.9,"angle":-15.75},{"time":2,"angle":0}],"translate":[{"time":0.2,"x":0,"y":0},{"time":0.6,"x":-18.37,"y":-9.19},{"time":1.5667,"x":0,"y":0}]},"tail1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-14.69,"curve":[0.28,0.54,0.53,0.78]},{"time":0.6,"angle":0},{"time":0.7667,"angle":2.68},{"time":0.9333,"angle":3.2,"curve":[0.377,0.02,0.713,0.59]},{"time":1.1667,"angle":-9.15,"curve":[0.431,0.33,0.738,0.84]},{"time":1.3,"angle":-14.94},{"time":1.5667,"angle":-11.02,"curve":[0.335,0.34,0.668,0.67]},{"time":1.6667,"angle":-10.95,"curve":[0.335,0.35,0.667,0.69]},{"time":1.8,"angle":0},{"time":2,"angle":1.01}]},"tail3":{"rotate":[{"time":0,"angle":-4.66},{"time":0.1333,"angle":-1.14},{"time":0.2667,"angle":-10.12,"curve":[0.145,0.39,0.515,0.72]},{"time":0.4667,"angle":-27.25,"curve":[0.296,0.39,0.64,0.73]},{"time":0.6,"angle":1.58},{"time":0.7333,"angle":-9.15},{"time":0.8333,"angle":-9.17},{"time":0.9333,"angle":-8.75},{"time":1.2,"angle":-1.6},{"time":1.3333,"angle":-14.48},{"time":1.5,"angle":-9.35},{"time":1.6667,"angle":17.55},{"time":1.8333,"angle":21.29},{"time":2,"angle":-4.66}]},"tail5":{"rotate":[{"time":0,"angle":5.3},{"time":0.1333,"angle":13.48},{"time":0.2667,"angle":22.33},{"time":0.4667,"angle":-17.34,"curve":[0.269,0.43,0.578,0.72]},{"time":0.6,"angle":-7.88},{"time":0.7333,"angle":-2.96},{"time":0.8333,"angle":-5.92},{"time":0.9333,"angle":-5.02},{"time":1.2,"angle":6.61},{"time":1.3333,"angle":14.51},{"time":1.5,"angle":-15.86},{"time":1.6667,"angle":-4.49},{"time":2,"angle":5.3}]},"tail7":{"rotate":[{"time":0,"angle":-10.89},{"time":0.1333,"angle":12.24},{"time":0.2667,"angle":19.39},{"time":0.4667,"angle":-11.34,"curve":[0.269,0.43,0.578,0.72]},{"time":0.6,"angle":-10.79},{"time":0.7333,"angle":-0.59},{"time":0.8333,"angle":9.29},{"time":0.9333,"angle":-4.49},{"time":1.2,"angle":7.15},{"time":1.3333,"angle":15.05},{"time":1.5,"angle":-11.36},{"time":1.6667,"angle":-25.05},{"time":1.8333,"angle":-9.49},{"time":2,"angle":-10.89}]},"tail9":{"rotate":[{"time":0,"angle":-10.89},{"time":0.1333,"angle":18.57},{"time":0.2667,"angle":23.95},{"time":0.4667,"angle":-15.74,"curve":[0.269,0.43,0.578,0.72]},{"time":0.6,"angle":-9.8},{"time":0.7333,"angle":8.13},{"time":0.8333,"angle":11.04},{"time":0.9333,"angle":-2.74},{"time":1.2,"angle":8.89},{"time":1.3333,"angle":16.79},{"time":1.5,"angle":-9.62},{"time":1.6667,"angle":-23.3},{"time":1.8333,"angle":-7.74},{"time":2,"angle":-10.89}]},"tongue2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.48},{"time":0.2,"angle":4.21},{"time":0.2667,"angle":52.29},{"time":0.5,"angle":17.71},{"time":0.6,"angle":2.84},{"time":0.6667,"angle":10.48},{"time":0.7,"angle":-9.91},{"time":0.7333,"angle":-12.97},{"time":0.7667,"angle":-5.12},{"time":0.8,"angle":-5.09},{"time":0.8333,"angle":1.23},{"time":1,"angle":-33.21},{"time":1.2,"angle":14.14},{"time":1.3667,"angle":12.21},{"time":1.5667,"angle":-13.32},{"time":1.8,"angle":0}],"translate":[{"time":0.2,"x":0,"y":0},{"time":0.5,"x":6.19,"y":1.67,"curve":"stepped"},{"time":1.0667,"x":6.19,"y":1.67},{"time":1.3,"x":0,"y":0}]},"tongue3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.48},{"time":0.2,"angle":4.21},{"time":0.2667,"angle":52.29},{"time":0.5,"angle":17.71},{"time":0.6,"angle":13.82},{"time":0.6667,"angle":-2.82},{"time":0.7,"angle":-6.98},{"time":0.7333,"angle":-20.11},{"time":0.7667,"angle":-0.12},{"time":0.8,"angle":-7.1},{"time":0.8333,"angle":1.23},{"time":1,"angle":-33.21},{"time":1.2,"angle":14.14},{"time":1.3667,"angle":19.46},{"time":1.5667,"angle":-36.24},{"time":1.8,"angle":0}],"translate":[{"time":0.2,"x":0,"y":0},{"time":0.5,"x":11.48,"y":3.7},{"time":1.2333,"x":0,"y":0}]},"saddle-strap-rear1":{"rotate":[{"time":0,"angle":-2.53},{"time":0.2,"angle":-6.38},{"time":0.2667,"angle":-12.9},{"time":0.5,"angle":-4.15},{"time":0.6,"angle":-20.2},{"time":0.7,"angle":-5.55},{"time":0.8,"angle":-3.4},{"time":1.3333,"angle":-6.7},{"time":1.5667,"angle":-10.34},{"time":1.6333,"angle":-9.23},{"time":1.8,"angle":0},{"time":2,"angle":-2.53}],"scale":[{"time":0.6,"x":1,"y":1},{"time":0.6667,"x":1.083,"y":1},{"time":0.8,"x":1.097,"y":1},{"time":1.5667,"x":1,"y":1}]},"front-foot-goal":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-31.3},{"time":0.1667,"angle":-17.24},{"time":1.6,"angle":-2.25},{"time":1.6667,"angle":-21.66},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-101.15,"y":98.46},{"time":0.1,"x":-308.64,"y":72.48},{"time":0.1667,"x":-392.1,"y":9.43,"curve":"stepped"},{"time":1.6,"x":-392.1,"y":9.43},{"time":1.6667,"x":-308.05,"y":111.02},{"time":1.8,"x":0,"y":0}]},"front-foot2":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-34.39},{"time":0.1,"angle":-11.91},{"time":0.2,"angle":-11.36},{"time":1.6,"angle":14.29},{"time":1.6667,"angle":-41.83},{"time":1.7333,"angle":-1.1},{"time":1.8,"angle":0}],"scale":[{"time":0.5667,"x":1,"y":1},{"time":0.6667,"x":1.051,"y":1}]},"front-foot3":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":8},{"time":0.1,"angle":-1.59},{"time":0.2,"angle":16.32},{"time":1.6,"angle":-8.75},{"time":1.6667,"angle":-12.37},{"time":1.8,"angle":0}],"translate":[{"time":0,"x":-29.67,"y":0,"curve":"stepped"},{"time":1.6,"x":-29.67,"y":0},{"time":1.6667,"x":-34.03,"y":8.95},{"time":2,"x":-29.67,"y":0}],"scale":[{"time":0.5667,"x":1,"y":1},{"time":0.6667,"x":1.058,"y":1}]},"back-hand":{"rotate":[{"time":0,"angle":-21.46},{"time":0.2,"angle":-21.93},{"time":0.3,"angle":-8.39},{"time":0.4,"angle":-5.38},{"time":0.5,"angle":-30.38},{"time":0.6,"angle":-55.56},{"time":0.6667,"angle":-18.74},{"time":0.7333,"angle":-20.26},{"time":0.8,"angle":-21.46}]},"saddle":{"rotate":[{"time":0,"angle":-3.18},{"time":0.6,"angle":0},{"time":0.8,"angle":-3.18}],"translate":[{"time":0,"x":12.68,"y":-2.67},{"time":0.6,"x":9.26,"y":-0.42},{"time":0.7,"x":12.68,"y":-2.67}]},"saddle-strap-rear2":{"rotate":[{"time":0,"angle":-0.47},{"time":0.1667,"angle":-0.59},{"time":0.2667,"angle":0.8},{"time":0.4,"angle":5.75},{"time":0.5,"angle":-11.85},{"time":0.6,"angle":0.04},{"time":0.7,"angle":-15.16},{"time":0.8,"angle":0.19},{"time":0.9333,"angle":-5.81},{"time":1.0333,"angle":-5.1},{"time":1.1333,"angle":-10.89},{"time":1.2333,"angle":-5.48},{"time":1.3333,"angle":-2.87},{"time":1.5667,"angle":7.26},{"time":1.6333,"angle":3.24},{"time":2,"angle":-0.47}],"scale":[{"time":0.6,"x":1,"y":1},{"time":0.8,"x":1.017,"y":1}]},"saddle-strap-front1":{"rotate":[{"time":0,"angle":-0.37},{"time":0.2667,"angle":0.04},{"time":0.4667,"angle":-4},{"time":0.6,"angle":-7},{"time":0.7,"angle":-7.25},{"time":0.8,"angle":-3.69},{"time":1.4667,"angle":-0.58},{"time":1.7667,"angle":0.55},{"time":2,"angle":-0.37}]},"saddle-strap-front2":{"rotate":[{"time":0,"angle":-0.37},{"time":0.2667,"angle":0.04},{"time":0.4667,"angle":-4},{"time":0.6,"angle":-7},{"time":0.7,"angle":-7.25},{"time":0.8,"angle":-3.69},{"time":1.4667,"angle":-0.58},{"time":1.7667,"angle":0.55},{"time":2,"angle":-0.37}]},"saddle-strap-rear3":{"rotate":[{"time":0,"angle":6.92},{"time":0.1667,"angle":-9.93},{"time":0.2667,"angle":0.57},{"time":0.5,"angle":-9.02},{"time":0.6,"angle":4.39},{"time":0.7,"angle":-3.88},{"time":0.8,"angle":-6.97},{"time":0.9333,"angle":7.13},{"time":1.0333,"angle":4.19},{"time":1.1333,"angle":7.88},{"time":1.2333,"angle":1.74},{"time":1.3333,"angle":-1.47},{"time":1.5667,"angle":0.93},{"time":1.6333,"angle":2.77},{"time":2,"angle":6.92}]},"rear-arm-target":{"translate":[{"time":0,"x":0,"y":0},{"time":0.6,"x":56.17,"y":-58.56},{"time":0.8,"x":34.47,"y":-59.19},{"time":2,"x":0,"y":0}]},"tail2":{"rotate":[{"time":0,"angle":-4.33},{"time":0.1333,"angle":-15.43},{"time":0.2667,"angle":-9.41},{"time":0.7333,"angle":0.95},{"time":0.9333,"angle":-1.28},{"time":1.3333,"angle":-16.53},{"time":1.5,"angle":-5.17},{"time":1.6667,"angle":7.32},{"time":1.8333,"angle":11.05},{"time":2,"angle":-4.33}]},"tail4":{"rotate":[{"time":0,"angle":13.37},{"time":0.1333,"angle":7.68},{"time":0.2667,"angle":6.84},{"time":0.4667,"angle":-2.28},{"time":0.7333,"angle":-2.62},{"time":0.8333,"angle":-6.07},{"time":0.9333,"angle":2.21},{"time":1.2,"angle":9.58},{"time":1.3333,"angle":-0.15},{"time":1.5,"angle":-20.79},{"time":1.6667,"angle":-9.43},{"time":1.8333,"angle":-5.7},{"time":2,"angle":13.37}]},"tail6":{"rotate":[{"time":0,"angle":5.3},{"time":0.1333,"angle":7.74},{"time":0.2667,"angle":10.2},{"time":0.4667,"angle":-12.04},{"time":0.6,"angle":-1.26},{"time":0.9333,"angle":-4.96},{"time":1.2,"angle":6.67},{"time":1.3333,"angle":14.57},{"time":1.5,"angle":-11.84},{"time":1.6667,"angle":-25.53},{"time":1.8333,"angle":-9.25},{"time":2,"angle":5.3}]},"tail8":{"rotate":[{"time":0,"angle":-10.89},{"time":0.1333,"angle":6.12},{"time":0.2667,"angle":15.74},{"time":0.4667,"angle":-21.25},{"time":0.6,"angle":-8.03},{"time":0.7333,"angle":4.9},{"time":0.8333,"angle":1.83},{"time":0.9333,"angle":-11.95},{"time":1.2,"angle":-0.32},{"time":1.3333,"angle":7.59},{"time":1.5,"angle":-18.82},{"time":1.6667,"angle":-32.51},{"time":1.8333,"angle":-16.95},{"time":2,"angle":-10.89}]},"tail10":{"rotate":[{"time":0,"angle":-10.89},{"time":0.1333,"angle":4.18},{"time":0.2667,"angle":4.66},{"time":0.4667,"angle":-20.32},{"time":0.7333,"angle":1.73},{"time":0.8333,"angle":-1.06},{"time":0.9333,"angle":-14.83},{"time":1.2,"angle":-3.2},{"time":1.3333,"angle":4.7},{"time":1.5,"angle":-21.71},{"time":1.6667,"angle":-35.4},{"time":1.8333,"angle":-19.84},{"time":2,"angle":-10.89}]},"jaw-inside":{"rotate":[{"time":0,"angle":0},{"time":0.7333,"angle":13.77}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5667,"x":-4.3,"y":4.48},{"time":0.7333,"x":-23.59,"y":-9.32}],"scale":[{"time":0.5667,"x":1,"y":1},{"time":0.7333,"x":1.119,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.45},{"time":0.2667,"angle":4.84},{"time":0.6667,"angle":14.69},{"time":0.7667,"angle":-1.4},{"time":0.8333,"angle":3.9},{"time":1.3333,"angle":0.49},{"time":1.5,"angle":-8.16},{"time":1.5667,"angle":4.87},{"time":1.6333,"angle":-1.8},{"time":1.8333,"angle":1.81},{"time":2,"angle":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.45},{"time":0.2667,"angle":4.84},{"time":0.6667,"angle":14.69},{"time":0.7667,"angle":-1.4},{"time":0.8333,"angle":3.9},{"time":1.3333,"angle":0.49},{"time":1.5,"angle":-8.16},{"time":1.5667,"angle":4.87},{"time":1.6333,"angle":-1.8},{"time":1.8333,"angle":1.81},{"time":2,"angle":0}]},"bone3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.45},{"time":0.2667,"angle":4.84},{"time":0.6667,"angle":14.69},{"time":0.7667,"angle":-1.4},{"time":0.8333,"angle":3.9},{"time":1.3333,"angle":0.49},{"time":1.5,"angle":-8.16},{"time":1.5667,"angle":4.87},{"time":1.6333,"angle":-1.8},{"time":1.8333,"angle":1.81},{"time":2,"angle":0}]},"bone4":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.45},{"time":0.2667,"angle":4.84},{"time":0.6667,"angle":14.69},{"time":0.7667,"angle":-1.4},{"time":0.8333,"angle":3.9},{"time":1.3333,"angle":0.49},{"time":1.5,"angle":-8.16},{"time":1.5667,"angle":4.87},{"time":1.6333,"angle":-1.8},{"time":1.8333,"angle":1.81},{"time":2,"angle":0}]},"bone5":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.45},{"time":0.2667,"angle":4.84},{"time":0.6667,"angle":14.69},{"time":0.7667,"angle":-1.4},{"time":0.8333,"angle":3.9},{"time":1.3333,"angle":0.49},{"time":1.5,"angle":-8.16},{"time":1.5667,"angle":4.87},{"time":1.6333,"angle":-1.8},{"time":1.8333,"angle":1.81},{"time":2,"angle":0}]}},"deform":{"default":{"raptor-body":{"raptor/raptor-body":[{"time":0},{"time":0.1667,"offset":38,"vertices":[17.20447,2.58527,16.91513,4.06912,15.53468,-7.83276,16.94922,-0.31917,16.91287,1.1535,-13.97229,-9.59964,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.7829,10.2714,5.25179,11.13231,9.69022,7.59036]},{"time":0.5667,"offset":12,"vertices":[-9.31108,-10.64148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-17.2807,2.35294,-17.4198,0.84387,-15.58569,7.82584,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-23.06187,34.92276,17.85608,37.84985,32.94675,25.80722,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.0E-5,0,0,0,-0.55209,25.09595]},{"time":0.6667,"offset":10,"vertices":[-3.50739,-1.35785,-25.99295,-15.34705,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.77461,0.91987,-21.65693,-1.6034,-20.3066,7.90774,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-21.18327,31.76294,15.08635,35.00784,27.79752,25.66834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.0E-5,0,0,0,0.16377,37.63276]},{"time":0.8667,"offset":10,"vertices":[-10.52225,-4.07355,3.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-30.76243,-1.94626,-30.13119,-6.49796,-29.74841,8.07153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-17.42607,25.4433,9.54691,29.32382,17.49905,25.39059]},{"time":2}]},"raptor-front-leg":{"raptor/raptor-front-leg":[{"time":0},{"time":0.1667,"offset":154,"vertices":[-10.88947,-30.36389,-10.71732,-22.72197,25.01976,2.27203,-7.08154,-15.97241,17.35857,1.98693,-7.08154,-15.97241,17.35857,1.98693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.08154,-15.97241,-16.2515,-6.41524,0,0,0,0,-2.62177,-5.91267,6.42596,0.73537,-2.62177,-5.91267,6.42596,0.73537,-2.62177,-5.91267,6.42596,0.73537]},{"time":0.5,"offset":148,"vertices":[-13.42749,17.0267,15.81436,-1.82489,12.55496,-3.69128,-14.84991,-27.69955,-12.20212,-20.72182,23.54478,0.26454,-7.08154,-15.97241,17.35857,1.98693,-7.08154,-15.97241,17.35857,1.98693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.08154,-15.97241,-16.2515,-6.41524,0,0,0,0,-2.62177,-5.91267,6.42596,0.73537,-2.14818,-17.13634,17.0141,4.48871,0.76036,-16.70564,15.74725,7.14192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.43222,-10.01694,-8.45212,9.17316,11.75989,-4.15782,0,0,0,0,0,0,0,0,0,0,8.35347,-9.45856,-10.85333,-6.43872]},{"time":0.7,"offset":148,"vertices":[-8.16173,41.49426,18.18862,-10.69293,-6.44682,-46.91269,-10.54358,-11.12482,-6.70166,-2.12044,13.43587,16.82005,-7.08154,-15.97241,17.35857,1.98693,-7.08154,-15.97241,17.35857,1.98693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.77762,-30.78729,-28.91833,1.94682,0,0,0,0,-2.62177,-5.91267,6.42596,0.73537,-2.14818,-17.13634,17.0141,4.48871,0.76036,-16.70564,15.74725,7.14192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7.43222,-10.01694,-8.45212,9.17316,11.75989,-4.15782,0.67496,-8.34445,-6.28122,5.53439,6.6424,-5.09544,2.34509,11.36743,6.20795,-9.80856,19.70685,-3.18417,-16.38966,-11.3985]},{"time":1.8}]}}}},"walk":{"slots":{"raptor-jaw-inside":{"color":[{"time":0,"color":"646464fe"},{"time":0.5333,"color":"808080fe"},{"time":1.0667,"color":"646464fe"}]},"tail-shadow":{"color":[{"time":0,"color":"0000004a"},{"time":0.1333,"color":"00000000"},{"time":0.2667,"color":"0000000c","curve":"stepped"},{"time":0.4333,"color":"0000000c"},{"time":0.4667,"color":"0000001c"},{"time":0.5333,"color":"00000000","curve":"stepped"},{"time":0.6667,"color":"00000000"},{"time":0.8,"color":"00000024"},{"time":0.9333,"color":"0000003a"},{"time":1.0667,"color":"0000004a"}],"attachment":[{"time":0,"name":"raptor/raptor-tail-shadow"},{"time":1.0667,"name":"raptor/raptor-tail-shadow"}]}},"bones":{"front-foot-goal":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-51.26},{"time":0.4,"angle":-65.18},{"time":0.5333,"angle":-76.29},{"time":0.8,"angle":-76.53},{"time":1.0667,"angle":0}],"translate":[{"time":0,"x":343.28,"y":36.5},{"time":0.2667,"x":86.51,"y":36.99},{"time":0.5333,"x":-173.36,"y":37.42},{"time":0.6,"x":-68.16,"y":141.15},{"time":0.7333,"x":91.79,"y":238.01},{"time":0.8,"x":155.9,"y":190.91},{"time":0.9667,"x":303.28,"y":94.41},{"time":1.0667,"x":343.28,"y":36.5}]},"hip":{"rotate":[{"time":0,"angle":-4.78},{"time":0.0667,"angle":-3.99},{"time":0.2667,"angle":-12.5},{"time":0.5333,"angle":-4.78},{"time":0.6,"angle":-3.99},{"time":0.8,"angle":-12.5},{"time":1.0667,"angle":-4.78}],"translate":[{"time":0,"x":161.93,"y":4.9,"curve":[0.27,0.38,0.621,0.4]},{"time":0.0667,"x":165.04,"y":-5.99,"curve":[0.245,0.01,0.758,1]},{"time":0.2667,"x":178.81,"y":136.53,"curve":[0.25,0,0.841,0.81]},{"time":0.5333,"x":161.93,"y":4.9,"curve":[0.27,0.38,0.621,0.4]},{"time":0.6,"x":165.04,"y":-5.99,"curve":[0.245,0.01,0.758,1]},{"time":0.8,"x":178.81,"y":136.52,"curve":[0.25,0,0.859,0.82]},{"time":1.0667,"x":161.93,"y":4.9}]},"rear-foot-goal":{"rotate":[{"time":0,"angle":-62.73},{"time":0.2667,"angle":-107.17},{"time":0.4667,"angle":-40.52},{"time":0.8,"angle":-97.16},{"time":1.0667,"angle":-62.73}],"translate":[{"time":0,"x":-266.7,"y":-15.47},{"time":0.1333,"x":-87.88,"y":124.85},{"time":0.2667,"x":88.36,"y":134.06},{"time":0.3667,"x":198.39,"y":90.65},{"time":0.4667,"x":308.19,"y":-26.42},{"time":0.6,"x":167.06,"y":-26.42},{"time":1.0667,"x":-266.7,"y":-15.47}]},"front-leg1":{"rotate":[{"time":0,"angle":27.08,"curve":"stepped"},{"time":1.0667,"angle":27.08}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0667,"x":-0.22,"y":15.2},{"time":0.5333,"x":-0.34,"y":12.16},{"time":0.7333,"x":-4.75,"y":31.94},{"time":1.0667,"x":0,"y":0}]},"front-leg-goal":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-18.05,"y":-2.89},{"time":0.4333,"x":-42.2,"y":-88.63},{"time":0.5333,"x":-27.31,"y":-43.91},{"time":0.7333,"x":-1.52,"y":-94.29},{"time":0.8,"x":-24.29,"y":-116.41},{"time":1,"x":-41.88,"y":-93.3},{"time":1.0667,"x":-18.05,"y":-2.89}]},"rear-leg1":{"rotate":[{"time":0,"angle":-64.85,"curve":"stepped"},{"time":1.0667,"angle":-64.85}]},"rear-leg-goal":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-2.05,"y":15.12},{"time":0.2667,"x":17.49,"y":-150.44},{"time":0.4667,"x":-40.21,"y":-81.76},{"time":0.5333,"x":-31.69,"y":-82.43},{"time":0.8,"x":2.65,"y":-169.22},{"time":0.9333,"x":-16.77,"y":-98.31},{"time":1.0667,"x":-2.05,"y":15.12}]},"tail1":{"rotate":[{"time":0,"angle":1.31},{"time":0.0667,"angle":4.14},{"time":0.3333,"angle":-5.78},{"time":0.6333,"angle":4.14},{"time":0.9,"angle":-5.78},{"time":1.0667,"angle":1.31}]},"torso1":{"rotate":[{"time":0,"angle":7.22},{"time":0.2667,"angle":4.2},{"time":0.5333,"angle":7.22},{"time":0.8,"angle":4.2},{"time":1.0667,"angle":7.22}]},"front-leg2":{"rotate":[{"time":0,"angle":-347.28,"curve":"stepped"},{"time":1.0667,"angle":-347.28}]},"rear-leg2":{"rotate":[{"time":0,"angle":27.05,"curve":"stepped"},{"time":1.0667,"angle":27.05}]},"saddle":{"rotate":[{"time":0,"angle":-2.52},{"time":0.2667,"angle":-4.17},{"time":0.5333,"angle":-3.85},{"time":0.8,"angle":-3.1},{"time":1.0667,"angle":-2.52}],"translate":[{"time":0,"x":5.87,"y":-0.06},{"time":0.2667,"x":0,"y":0,"curve":[0.15,0.28,0.75,1]},{"time":0.3333,"x":-0.04,"y":5.92,"curve":[0.421,0,0.85,0.78]},{"time":0.5333,"x":-8.81,"y":0.1},{"time":0.6,"x":-7.83,"y":-2.27},{"time":0.8,"x":0,"y":0,"curve":[0.15,0.28,0.75,1]},{"time":0.8667,"x":-0.04,"y":5.92,"curve":[0.421,0,0.85,0.78]},{"time":1.0667,"x":5.87,"y":-0.06}]},"torso2":{"rotate":[{"time":0,"angle":-4.19},{"time":0.2667,"angle":-1.92,"curve":[0.25,0,0.75,1]},{"time":0.5333,"angle":-4.19},{"time":0.8,"angle":-1.92,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":-4.19}]},"front-arm1":{"rotate":[{"time":0,"angle":-329.45},{"time":0.5,"angle":-349.54},{"time":1.0667,"angle":-329.45}],"translate":[{"time":0,"x":20.65,"y":-7.55},{"time":0.5,"x":-9.9,"y":10.94},{"time":0.8,"x":24.1,"y":-1.47},{"time":0.9333,"x":21.73,"y":-3.71},{"time":1.0667,"x":20.65,"y":-7.55}]},"front-leg3":{"rotate":[{"time":0,"angle":1.14,"curve":"stepped"},{"time":1.0667,"angle":1.14}]},"neck":{"rotate":[{"time":0,"angle":-22.13},{"time":0.2667,"angle":-4.12},{"time":0.5333,"angle":-22.13},{"time":0.8,"angle":-4.12},{"time":1.0667,"angle":-22.13}],"translate":[{"time":0,"x":19.46,"y":-14.29},{"time":0.2667,"x":9.68,"y":-8.36},{"time":0.5333,"x":21.46,"y":-15.75},{"time":0.8,"x":9.68,"y":-8.36},{"time":1.0667,"x":19.46,"y":-14.29}]},"rear-arm1":{"rotate":[{"time":0,"angle":23.86},{"time":0.5,"angle":37.58},{"time":1.0667,"angle":23.86}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":11.13,"y":-13.39},{"time":1.0667,"x":0,"y":0}]},"rear-leg3":{"rotate":[{"time":0,"angle":-23.19,"curve":"stepped"},{"time":1.0667,"angle":-23.19}]},"saddle-strap-rear1":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":2.48},{"time":0.3,"angle":0.48},{"time":0.4333,"angle":-1.31},{"time":0.6,"angle":3.41},{"time":0.6333,"angle":3.21},{"time":0.9,"angle":-2.3},{"time":1.0667,"angle":0}]},"front-arm2":{"rotate":[{"time":0,"angle":-11.14},{"time":0.5,"angle":22.44},{"time":1.0667,"angle":-11.14}]},"front-foot1":{"rotate":[{"time":0,"angle":-41.33,"curve":"stepped"},{"time":1.0667,"angle":-41.33}]},"head":{"rotate":[{"time":0,"angle":21.06},{"time":0.2667,"angle":14.73,"curve":[0.375,0.5,0.75,1]},{"time":0.5333,"angle":21.06},{"time":0.8,"angle":14.73,"curve":[0.375,0.5,0.75,1]},{"time":1.0667,"angle":21.06}],"translate":[{"time":0,"x":9.88,"y":-14.4},{"time":0.2667,"x":5.05,"y":2.22},{"time":0.5333,"x":7.52,"y":-10.95},{"time":0.8,"x":5.05,"y":2.22},{"time":1.0667,"x":9.88,"y":-14.4}]},"rear-arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-30.21},{"time":1.0667,"angle":0}]},"rear-foot1":{"rotate":[{"time":0,"angle":2.07,"curve":"stepped"},{"time":1.0667,"angle":2.07}]},"saddle-strap-rear2":{"rotate":[{"time":0,"angle":-4.45},{"time":0.1,"angle":-0.18},{"time":0.3,"angle":-1.85},{"time":0.4333,"angle":-4.59},{"time":0.6,"angle":0.52},{"time":0.6333,"angle":0.39},{"time":0.9,"angle":-4.05},{"time":1.0667,"angle":-4.45}]},"stirrup":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.96},{"time":0.5333,"angle":0},{"time":0.8,"angle":-4.96},{"time":1.0667,"angle":0}],"translate":[{"time":0,"x":8.98,"y":4.99},{"time":0.2667,"x":4.85,"y":1},{"time":0.5333,"x":7.76,"y":-2.99},{"time":0.8,"x":4.85,"y":1},{"time":1.0667,"x":8.98,"y":4.99}]},"front-foot2":{"rotate":[{"time":0,"angle":36.9},{"time":0.0667,"angle":7.88},{"time":0.1333,"angle":4.67},{"time":0.4,"angle":7.59},{"time":0.5333,"angle":8.08},{"time":0.6667,"angle":-67.33},{"time":0.7333,"angle":-65.24},{"time":1,"angle":27.75},{"time":1.0667,"angle":36.9}]},"front-hand":{"rotate":[{"time":0,"angle":9.49},{"time":0.5,"angle":-48.61},{"time":1.0667,"angle":9.49}]},"horn-rear":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":12.34,"y":9.16},{"time":0.5333,"x":0,"y":0},{"time":0.8,"x":12.34,"y":9.16},{"time":1.0667,"x":0,"y":0}]},"jaw":{"rotate":[{"time":0,"angle":-2.84},{"time":0.2,"angle":-10.94},{"time":0.3333,"angle":-10.86},{"time":0.6667,"angle":-16.61},{"time":0.8667,"angle":-9.25},{"time":1.0667,"angle":-2.84}],"translate":[{"time":0,"x":-0.34,"y":-2.02},{"time":0.2667,"x":0.79,"y":9.47},{"time":0.5,"x":0.93,"y":6.09},{"time":0.7333,"x":0.79,"y":9.47},{"time":1.0667,"x":-0.34,"y":-2.02}]},"rear-foot2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-82.38},{"time":0.2667,"angle":-110.31},{"time":0.4333,"angle":36.22},{"time":0.5333,"angle":2.1},{"time":1.0667,"angle":0}]},"rear-hand":{"rotate":[{"time":0,"angle":-28.89},{"time":0.5,"angle":12.2},{"time":1.0667,"angle":-28.89}]},"saddle-strap-rear3":{"rotate":[{"time":0,"angle":-1.32},{"time":0.1,"angle":2.95},{"time":0.3,"angle":1.28},{"time":0.4333,"angle":-1.46},{"time":0.6,"angle":3.65},{"time":0.6333,"angle":3.52},{"time":0.9,"angle":-0.92},{"time":1.0667,"angle":-1.32}]},"tongue1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.73},{"time":0.6667,"angle":-1.69},{"time":0.9333,"angle":17.04},{"time":1.0667,"angle":0}]},"front-foot3":{"rotate":[{"time":0,"angle":-1.65},{"time":0.0667,"angle":-3.21},{"time":0.1333,"angle":-3.94},{"time":0.2667,"angle":-3.82},{"time":0.5333,"angle":-5.89},{"time":0.6333,"angle":-25.29},{"time":0.8333,"angle":-7.16},{"time":1,"angle":10.93},{"time":1.0667,"angle":-1.65}]},"tongue2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.68},{"time":0.6667,"angle":-1.69},{"time":0.9333,"angle":-7.7},{"time":1.0667,"angle":0}]},"tongue3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-45.22},{"time":0.6667,"angle":-1.69},{"time":0.9333,"angle":-32.34},{"time":1.0667,"angle":0}]},"head2":{"rotate":[{"time":0,"angle":38.6},{"time":0.2667,"angle":43.19},{"time":0.5333,"angle":38.6},{"time":0.8,"angle":43.19},{"time":1.0667,"angle":38.6}]},"neck2":{"rotate":[{"time":0,"angle":9.65},{"time":0.2667,"angle":14.71},{"time":0.5333,"angle":9.65},{"time":0.8,"angle":14.71},{"time":1.0667,"angle":9.65}]},"spineboy-hip":{"translate":[{"time":0,"x":30.8,"y":-38.27,"curve":[0.413,0,0.873,0.78]},{"time":0.2667,"x":-12.88,"y":0.58,"curve":[0.139,0.18,0.75,1]},{"time":0.5333,"x":33.99,"y":-13.71,"curve":[0.367,0,0.867,0.82]},{"time":0.8,"x":-12.88,"y":0.58,"curve":[0.164,0.17,0.75,1]},{"time":1.0667,"x":30.8,"y":-38.27}]},"spineboy-torso":{"rotate":[{"time":0,"angle":-42.71},{"time":0.2667,"angle":-29.48,"curve":[0.493,0,0.75,1]},{"time":0.5333,"angle":-40.76},{"time":0.8,"angle":-29.48,"curve":[0.493,0,0.75,1]},{"time":1.0667,"angle":-42.71}]},"front-arm":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-14.43,"y":-11.03},{"time":0.5333,"x":0,"y":0},{"time":0.8,"x":-14.43,"y":-11.03},{"time":1.0667,"x":0,"y":0}]},"gun":{"rotate":[{"time":0,"angle":-11.68,"curve":[0.379,0.6,0.724,1]},{"time":0.0667,"angle":-17.6},{"time":0.3333,"angle":14.46,"curve":[0.25,0,0.75,1]},{"time":0.6,"angle":-24.74,"curve":[0.326,0.01,0.716,1]},{"time":0.8667,"angle":14.46,"curve":[0.242,0,0.667,0.67]},{"time":1.0667,"angle":-11.68}],"translate":[{"time":0,"x":0.84,"y":-3.82},{"time":0.0667,"x":0,"y":0},{"time":0.3333,"x":3.38,"y":-15.28},{"time":0.6,"x":0,"y":0},{"time":0.8667,"x":3.38,"y":-15.28},{"time":1.0667,"x":0.84,"y":-3.82}]},"tail2":{"rotate":[{"time":0,"angle":9.88},{"time":0.1333,"angle":-0.81},{"time":0.2333,"angle":-2.7},{"time":0.3,"angle":-11.33},{"time":0.4333,"angle":-15.11},{"time":0.5333,"angle":9.88},{"time":0.6667,"angle":-0.81},{"time":0.7667,"angle":-2.7},{"time":0.8333,"angle":-11.33},{"time":0.9667,"angle":-15.11},{"time":1.0667,"angle":9.88}]},"tail3":{"rotate":[{"time":0,"angle":-7.15},{"time":0.1333,"angle":7.47},{"time":0.2333,"angle":-0.7},{"time":0.3,"angle":-6.29},{"time":0.4333,"angle":0.13},{"time":0.5333,"angle":-7.15},{"time":0.6667,"angle":7.47},{"time":0.7667,"angle":-0.7},{"time":0.8333,"angle":-6.29},{"time":0.9667,"angle":0.13},{"time":1.0667,"angle":-7.15}]},"tail4":{"rotate":[{"time":0,"angle":-4.53},{"time":0.1333,"angle":11.46},{"time":0.2333,"angle":5.93},{"time":0.3,"angle":2.43},{"time":0.4333,"angle":0.24},{"time":0.5333,"angle":-4.53},{"time":0.6667,"angle":11.46},{"time":0.7667,"angle":5.93},{"time":0.8333,"angle":2.43},{"time":0.9667,"angle":0.24},{"time":1.0667,"angle":-4.53}]},"tail5":{"rotate":[{"time":0,"angle":-9.9},{"time":0.1333,"angle":11.7},{"time":0.2333,"angle":13.82},{"time":0.3,"angle":10.26},{"time":0.4333,"angle":-4.1},{"time":0.5333,"angle":-9.9},{"time":0.6667,"angle":11.7},{"time":0.7667,"angle":13.82},{"time":0.8333,"angle":10.26},{"time":0.9667,"angle":-4.1},{"time":1.0667,"angle":-9.9}]},"tail6":{"rotate":[{"time":0,"angle":-9.9},{"time":0.1333,"angle":13.73},{"time":0.2333,"angle":15.23},{"time":0.3,"angle":12.03},{"time":0.4333,"angle":-10.82},{"time":0.5333,"angle":-9.9},{"time":0.6667,"angle":13.73},{"time":0.7667,"angle":15.23},{"time":0.8333,"angle":12.03},{"time":0.9667,"angle":-10.82},{"time":1.0667,"angle":-9.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":0.845,"y":1},{"time":0.2667,"x":0.91,"y":1},{"time":0.4,"x":0.834,"y":1},{"time":0.5333,"x":0.92,"y":1},{"time":0.6667,"x":0.884,"y":1},{"time":0.8,"x":0.967,"y":1},{"time":0.9333,"x":0.904,"y":1},{"time":1.0667,"x":1,"y":1}]},"tail7":{"rotate":[{"time":0,"angle":-9.9},{"time":0.1333,"angle":9.57},{"time":0.2333,"angle":10.69},{"time":0.3,"angle":8.31},{"time":0.4333,"angle":-9.18},{"time":0.5333,"angle":-9.9},{"time":0.6667,"angle":9.57},{"time":0.7667,"angle":10.69},{"time":0.8333,"angle":8.31},{"time":0.9667,"angle":-9.18},{"time":1.0667,"angle":-9.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":0.845,"y":1},{"time":0.2667,"x":0.91,"y":1},{"time":0.4,"x":0.834,"y":1},{"time":0.5333,"x":0.92,"y":1},{"time":0.6667,"x":0.884,"y":1},{"time":0.8,"x":0.967,"y":1},{"time":0.9333,"x":0.904,"y":1},{"time":1.0667,"x":1,"y":1}]},"tail8":{"rotate":[{"time":0,"angle":-9.9},{"time":0.0667,"angle":-14.09},{"time":0.1333,"angle":-6.85},{"time":0.2,"angle":10.88},{"time":0.2333,"angle":9.63},{"time":0.3,"angle":9.48},{"time":0.4333,"angle":-10.9},{"time":0.4667,"angle":-21.91},{"time":0.5333,"angle":-9.9},{"time":0.6,"angle":-14.09},{"time":0.6667,"angle":-6.85},{"time":0.7333,"angle":10.88},{"time":0.7667,"angle":9.63},{"time":0.8333,"angle":9.48},{"time":0.9667,"angle":-10.9},{"time":1,"angle":-21.91},{"time":1.0667,"angle":-9.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":0.845,"y":1},{"time":0.2667,"x":0.91,"y":1},{"time":0.4,"x":0.834,"y":1},{"time":0.5333,"x":0.92,"y":1},{"time":0.6667,"x":0.884,"y":1},{"time":0.8,"x":0.967,"y":1},{"time":0.9333,"x":0.904,"y":1},{"time":1.0667,"x":1,"y":1}]},"tail9":{"rotate":[{"time":0,"angle":-6.79},{"time":0.0333,"angle":-20.12},{"time":0.1333,"angle":-9.9},{"time":0.2,"angle":-18.42},{"time":0.2667,"angle":-15.51},{"time":0.3333,"angle":10.33},{"time":0.3667,"angle":13.13},{"time":0.4333,"angle":4.99},{"time":0.5,"angle":6.54},{"time":0.5667,"angle":-20.12},{"time":0.6667,"angle":-9.9},{"time":0.7333,"angle":-18.42},{"time":0.8,"angle":-15.51},{"time":0.8667,"angle":10.33},{"time":0.9,"angle":13.13},{"time":0.9667,"angle":4.99},{"time":1.0333,"angle":6.54},{"time":1.0667,"angle":-6.79}],"scale":[{"time":0,"x":0.904,"y":1},{"time":0.1333,"x":1,"y":1},{"time":0.2667,"x":0.845,"y":1},{"time":0.4,"x":0.91,"y":1},{"time":0.5333,"x":0.834,"y":1},{"time":0.6667,"x":0.92,"y":1},{"time":0.8,"x":0.884,"y":1},{"time":0.9333,"x":0.967,"y":1},{"time":1.0667,"x":0.904,"y":1}]},"tail10":{"rotate":[{"time":0,"angle":-5.98},{"time":0.0333,"angle":-12.6},{"time":0.0667,"angle":-23.33},{"time":0.1333,"angle":-9.9},{"time":0.2,"angle":-23.4},{"time":0.2667,"angle":-25.45},{"time":0.3333,"angle":2.64},{"time":0.3667,"angle":6.57},{"time":0.4333,"angle":13.89},{"time":0.5667,"angle":-12.6},{"time":0.6,"angle":-23.33},{"time":0.6667,"angle":-9.9},{"time":0.7333,"angle":-23.4},{"time":0.8,"angle":-25.45},{"time":0.8667,"angle":2.64},{"time":0.9,"angle":6.57},{"time":0.9667,"angle":13.89},{"time":1.0667,"angle":-5.98}],"scale":[{"time":0,"x":0.904,"y":1},{"time":0.1333,"x":1,"y":1},{"time":0.2667,"x":0.845,"y":1},{"time":0.4,"x":0.91,"y":1},{"time":0.5333,"x":0.834,"y":1},{"time":0.6667,"x":0.92,"y":1},{"time":0.8,"x":0.884,"y":1},{"time":0.9333,"x":0.967,"y":1},{"time":1.0667,"x":0.904,"y":1}]},"horn-front":{"translate":[{"time":0,"x":-2.29,"y":-13.82},{"time":0.2667,"x":-1.21,"y":-7.32},{"time":0.5333,"x":0.81,"y":5.71},{"time":0.8,"x":0.88,"y":-4.18},{"time":1.0667,"x":-2.29,"y":-13.82}]},"saddle-strap-front2":{"rotate":[{"time":0,"angle":9.54},{"time":0.2667,"angle":5.97},{"time":0.5333,"angle":0.32},{"time":0.6,"angle":2.65},{"time":0.8,"angle":3.68},{"time":1.0667,"angle":9.54}]},"saddle-strap-front1":{"rotate":[{"time":0,"angle":9.54},{"time":0.2667,"angle":5.97},{"time":0.5333,"angle":0.32},{"time":0.6,"angle":2.65},{"time":0.8,"angle":3.68},{"time":1.0667,"angle":9.54}]},"jaw-inside":{"translate":[{"time":0,"x":-8.34,"y":-3.22},{"time":0.5333,"x":1.17,"y":-1.6},{"time":1.0667,"x":-8.34,"y":-3.22}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-8.07},{"time":0.1667,"angle":-8.59},{"time":0.5333,"angle":-11.19},{"time":0.6333,"angle":-8.07},{"time":0.7,"angle":-8.59},{"time":1.0667,"angle":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-8.07},{"time":0.1667,"angle":14.12},{"time":0.3333,"angle":-10.54},{"time":0.5333,"angle":-13.65},{"time":0.6333,"angle":-8.07},{"time":0.7,"angle":14.12},{"time":0.8667,"angle":-10.54},{"time":1.0667,"angle":0}]},"bone3":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":5.59},{"time":0.1667,"angle":8.3},{"time":0.3333,"angle":-1.12},{"time":0.5333,"angle":-5.17},{"time":0.6333,"angle":5.59},{"time":0.7,"angle":8.3},{"time":0.8667,"angle":-1.12},{"time":1.0667,"angle":0}]},"bone4":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":5.59},{"time":0.1667,"angle":8.3},{"time":0.3333,"angle":-1.12},{"time":0.5333,"angle":-5.17},{"time":0.6333,"angle":5.59},{"time":0.7,"angle":8.3},{"time":0.8667,"angle":-1.12},{"time":1.0667,"angle":0}]},"bone5":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":5.59},{"time":0.1667,"angle":8.3},{"time":0.3333,"angle":-1.12},{"time":0.5333,"angle":-5.17},{"time":0.6333,"angle":5.59},{"time":0.7,"angle":8.3},{"time":0.8667,"angle":-1.12},{"time":1.0667,"angle":0}]}},"deform":{"default":{"raptor-body":{"raptor/raptor-body":[{"time":0,"vertices":[-1.73239,-10.44198,-1.46689,-8.84256,-0.21689,-1.30694,-6.0E-5,-2.0E-5,-1.46689,-8.84256,5.0E-5,0,5.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.0E-5,-6.0E-5,0,0,0,0,0,0,0,0,11.1855,0.31644,11.18935,-0.12109,-9.99716,-5.02722,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,0,-1.2E-4,6.0E-5,-6.0E-5,6.0E-5,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,4.0E-5,-6.0E-5,0,0,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,0,0,0,-4.0E-5,-6.0E-5,-2.0E-5,-15.88501,24.14755,7.25766,27.97704,8.45639,27.63996,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,20.14196,0.56873,20.14884,-0.21915,16.40837,-1.58496,11.58151,-11.7309,0.37015,-4.85554,0.16022,-4.86614,4.0E-5,-6.0E-5,0,0,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-32.81676,-12.45938,-35.10101,-0.30017,-34.99226,2.78079,-7.72185,2.23502,-7.8739,1.61874,-7.99338,0.85056,-21.86118,-0.49329,-21.71152,-2.60098,-20.94153,-6.29172,-19.93359,-8.98814,-12.04089,3.64125,-14.95947,2.3022,-13.80969,0.32066,-15.73022,-0.81049,-11.45898,-0.07294,-11.42226,0.93271,-11.4603,0.02835,-11.40939,-1.07846,-18.55936,0.58215,-18.52805,-1.2121,-18.04468,-4.37643,-13.77896,0.60046,-13.7384,-1.2133,-13.37756,-3.33739,-12.2749,1.27342,-14.28076,-0.22295,-16.36969,-1.35783,-6.0E-5,-2.0E-5,5.0E-5,0,-2.82169,-17.00729,-2.46448,-14.85418,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-1.46439,-8.82623,-1.31543,-7.92809,-1.10992,-6.68966,-1.02371,-6.16998,-1.18591,-7.14785,-1.36481,-8.22652,-0.93686,-5.64651,-1.05206,-6.3413,-1.31223,-7.90881,-1.57056,-9.46612,-1.3873,-8.36199,-1.17612,-7.08907,-1.32928,-8.01211,-0.84509,-5.09344,-23.08304,1.6066,-23.01654,-2.38095,-22.50476,-5.38278,-12.38202,2.54651,-12.62036,0.58711,-15.02991,-0.83086,-1.58633,-9.56142,-24.21736,-5.43936,-24.60036,3.29974,-24.21712,5.44556,-24.57144,3.51672,-14.67059,-0.34517,-16.72638,-1.50173,-6.0E-5,0,-7.97382,0.00757,-9.07715,-0.6467,-12.75507,2.36398,-15.34497,0.90794,-18.0415,-0.21636,-11.84271,4.04813,-12.32141,2.15456,-14.99158,0.77748,-12.79285,0.96336,-12.78052,-1.04039,-17.6261,-0.49261,-17.409,-2.80194,-16.75665,-5.47716,-21.79681,-0.04507,-21.46588,-3.78665,-20.78278,-6.5723,-9.61081,1.11224,-9.66833,0.35004,-9.65668,-0.58542,-9.41296,-2.23477,-15.1702,3.14603,-14.83687,4.46405,-15.14316,3.27939,0,0,0,0,0,0,0,0,7.45702,0.21085,7.45959,-0.08096,-6.6649,-3.35132]},{"time":0.2667,"vertices":[-0.2166,-1.30527,-0.18336,-1.10532,-0.02716,-0.16339,-6.0E-5,-2.0E-5,-0.18336,-1.10532,5.0E-5,0,5.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.0E-5,-6.0E-5,0,0,0,0,0,0,0,0,1.39819,0.03955,1.39867,-0.01514,-1.24965,-0.6284,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,0,-1.2E-4,6.0E-5,-6.0E-5,6.0E-5,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,4.0E-5,-6.0E-5,0,0,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,0,0,0,-4.0E-5,-6.0E-5,-2.0E-5,11.49166,6.87846,8.7349,-2.6687,11.45735,-4.60934,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,0,-1.4E-4,1.0E-5,-1.7E-4,-6.0E-5,1.1E-4,-9.02717,-1.82815,-8.99944,-2.08419,-3.65797,-1.03493,-3.47146,1.54946,-5.0E-5,-5.0E-5,-6.0E-5,-2.0E-5,4.0E-5,-1.1E-4,-3.0E-5,-3.0E-5,0,-1.4E-4,1.0E-5,-1.7E-4,-6.0E-5,1.1E-4,1.19474,-1.10259,0.92812,0.10123,0.90294,-0.31594,15.0729,4.11747,15.19727,2.92025,15.0602,-1.70629,18.18047,13.11014,21.13782,7.71683,24.08294,2.81189,25.9774,-1.96117,6.97969,0.18677,7.95368,2.41175,3.30846,-1.19587,4.17032,0.22177,1.47621,-3.10924,0.9801,-3.38627,0.71264,-3.66487,-0.40487,-4.26096,14.20705,12.40575,17.01532,7.88709,19.63374,3.63784,13.32183,6.02744,15.3124,3.51068,16.81614,0.97486,6.62869,-2.36325,8.27107,-0.39574,9.14562,3.04038,-6.0E-5,-2.0E-5,1.1E-4,-6.0E-5,-0.35276,-2.12593,-0.30811,-1.85679,1.0E-5,-1.7E-4,-9.0E-5,6.0E-5,-3.10157,-1.32028,-3.08295,-1.20801,-3.05726,-1.05321,-3.04648,-0.98825,-3.06676,-1.11048,-3.08912,-1.24532,-0.11716,-0.70583,-0.13156,-0.79268,-0.16408,-0.98862,-3.11484,-1.40027,-0.17347,-1.04527,-3.06553,-1.10314,-0.16621,-1.00153,-0.10569,-0.6367,15.75295,9.29565,18.85947,5.70753,21.13696,2.01862,10.15045,3.34682,11.25148,1.79501,12.57044,5.84427,-0.19835,-1.1952,3.74609,4.06871,3.9685,4.75008,4.59175,3.90643,4.7614,3.10173,7.98625,-1.31892,9.25332,2.06863,-6.0E-5,0,0.25203,0.1295,0.2271,0.16943,7.86523,-1.22272,9.26955,1.02952,9.58047,4.71134,8.21227,3.16202,9.13926,1.98164,9.93424,5.05192,9.933,3.97626,11.12183,2.43649,18.28591,4.2393,20.22011,0.72114,21.53036,-2.68092,21.46704,10.31437,25.17102,5.30524,27.77731,0.29309,12.76918,8.25581,13.29114,7.28292,14.69148,3.18368,15.86002,-0.4381,6.52111,1.24054,6.5952,0.12574,6.50193,-0.63672,0,0,0,0,0,0,0,0,0.93213,0.02636,0.93245,-0.01012,-0.83311,-0.41892]},{"time":0.5333,"vertices":[2.41064,15.5181,0.63855,4.10663,0.33716,2.1703,0.05615,0.36137,0.63855,4.10663,-12.88382,-2.24988,5.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.0E-5,-6.0E-5,0,0,-11.69526,-0.33041,-11.6992,0.12662,-7.75577,8.76004,-15.65966,-0.44379,-15.66505,0.16824,13.93645,7.15527,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,0,-1.2E-4,6.0E-5,-6.0E-5,6.0E-5,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,4.0E-5,-6.0E-5,0,0,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,0,0,0,-4.0E-5,-6.0E-5,-2.0E-5,-12.02893,13.58496,2.00912,18.03365,2.78397,17.92991,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-35.68569,-1.00909,-35.6978,0.38577,-29.38495,-2.28479,-23.17815,17.93654,0,-4.0E-5,-6.0E-5,-2.0E-5,4.0E-5,-6.0E-5,0,0,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-9.11507,2.24191,-7.77106,5.26505,-7.27872,5.92679,18.54189,7.3241,17.90506,8.76465,16.97614,10.45093,25.34979,1.08032,25.12805,3.52008,26.23853,7.78607,27.15082,11.16714,12.27936,4.58884,12.81525,6.58737,2.09631,0.25529,2.2002,0.59886,12.42097,8.27063,13.09952,7.14938,12.49329,8.1608,11.64825,9.3277,20.66135,7.45007,19.84637,9.40845,19.48682,12.67929,23.3761,3.23181,24.71832,6.27632,25.48083,10.03455,7.67108,2.18302,7.95972,3.50586,8.21252,4.58693,-6.0E-5,-2.0E-5,5.0E-5,0,3.91388,25.19505,3.42969,22.07816,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,2.05255,13.21311,1.84576,11.88197,1.56445,10.07084,1.44916,9.32896,1.67383,10.77518,1.91876,12.3516,1.32996,8.56089,1.48474,9.55747,1.84027,11.8462,2.19794,14.14899,1.95148,12.56187,1.66071,10.69068,1.87244,12.05326,1.2041,7.75156,21.26105,3.70126,22.06598,7.29993,22.72656,10.13725,18.17822,2.49478,19.09631,5.28439,20.84369,8.21603,2.22339,14.313,1.2112,9.3262,4.37169,8.32684,5.08629,7.91138,4.44498,8.2879,5.22137,3.00792,5.05341,3.83084,-6.0E-5,0,0,0,-6.0E-5,0,11.10803,3.84043,11.52826,5.68954,11.96356,7.16939,16.63696,3.23218,17.31641,5.77393,18.62,8.46061,17.16174,5.04568,17.57532,7.64693,20.54541,6.39001,21.21869,9.03537,21.25909,12.21709,26.14914,3.07092,27.41541,7.5188,28.45703,11.05708,24.96385,5.11111,24.48148,7.06558,23.68576,9.39395,23.59863,13.32486,10.42529,7.86185,11.07576,6.91714,10.49429,7.76959,0,0,0,0,0,0,0,0,-15.65966,-0.44379,-15.66505,0.16824,13.93645,7.15527]},{"time":0.8,"offset":38,"vertices":[16.03437,2.63824,15.99692,2.85516,13.27676,-9.36844,13.98628,2.2995,13.95371,2.48871,-11.20251,-8.68344,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,0,-1.2E-4,6.0E-5,-6.0E-5,6.0E-5,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,4.0E-5,-6.0E-5,0,0,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,0,0,0,-4.0E-5,-6.0E-5,-2.0E-5,-4.61301,22.3656,11.32343,19.83123,14.54279,17.6069,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,-1.0E-5,-1.5E-4,1.0E-5,-1.8E-4,-6.0E-5,1.2E-4,16.03436,2.63809,15.99693,2.85498,-6.5246,-0.95636,-5.62189,3.44666,-6.0E-5,-5.0E-5,-6.0E-5,-2.0E-5,4.0E-5,-1.2E-4,-3.0E-5,-3.0E-5,-1.0E-5,-1.5E-4,1.0E-5,-1.8E-4,-6.0E-5,1.2E-4,-31.16388,-14.47467,-31.96829,-12.60034,-33.50363,-7.62723,-15.67404,-7.54257,-16.1824,-6.37985,-17.32532,-1.55136,-9.63904,-3.7999,-10.31979,-0.92398,-11.29289,1.53363,-11.83365,3.81946,-0.76116,0.37372,-0.77516,0.47284,6.0E-5,6.0E-5,-1.2E-4,1.2E-4,-15.94965,-10.91464,-17.41495,-8.38034,-17.9798,-7.08823,-19.24954,-1.72372,-11.73975,-4.62833,-12.56888,-1.12546,-13.75427,1.86774,-4.31284,0.58575,-4.5195,1.45868,-4.60384,2.25964,-6.0E-5,1.2E-4,6.0E-5,6.0E-5,-1.2E-4,1.2E-4,-6.0E-5,-2.0E-5,1.1E-4,-6.0E-5,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,1.0E-5,-1.8E-4,-9.0E-5,6.0E-5,-3.33545,-0.248,-3.33545,-0.248,-3.33545,-0.248,-3.33545,-0.248,-3.33545,-0.248,-3.33545,-0.248,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,-3.33545,-0.248,-6.0E-5,-2.0E-5,-3.33545,-0.248,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,-6.12589,-0.54849,-6.70357,0.91046,-7.02463,2.26709,-2.38968,0.77112,-2.4345,1.19476,-2.48011,1.5127,-6.0E-5,-2.0E-5,-18.30502,-14.19171,-19.11487,-13.08087,-20.87097,-10.04361,-21.54788,-8.49509,0,0,-6.0E-5,0,-6.0E-5,0,0,0,-6.0E-5,0,-2.4E-4,6.0E-5,-1.0E-5,-6.0E-5,-1.8E-4,-5.5E-4,-1.49728,0.48315,-1.52541,0.74872,-1.55397,0.94781,-3.34583,1.07977,-3.40847,1.67303,-5.45097,0.7402,-5.71207,1.84357,-5.81841,2.85571,-8.14557,-0.72922,-8.91388,1.21048,-9.34079,3.01471,-13.53638,-6.51404,-13.9754,-5.5097,-14.96246,-1.33981,-16.37357,2.22342,-17.52469,-11.99283,-19.13483,-9.20819,-19.7554,-7.7887,0,0,0,0,0,0,0,0,13.98628,2.2995,13.95371,2.48871,-11.20251,-8.68344]},{"time":1.0667,"vertices":[-1.73239,-10.44198,-1.46689,-8.84256,-0.21689,-1.30694,-6.0E-5,-2.0E-5,-1.46689,-8.84256,5.0E-5,0,5.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.0E-5,-6.0E-5,0,0,0,0,0,0,0,0,11.1855,0.31644,11.18935,-0.12109,-9.99716,-5.02722,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,3.0E-5,-3.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,0,0,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,0,-1.2E-4,6.0E-5,-6.0E-5,6.0E-5,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,0,0,-1.2E-4,6.0E-5,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,-1.2E-4,6.0E-5,-6.0E-5,0,0,0,-6.0E-5,0,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,0,0,0,-6.0E-5,0,0,0,-6.0E-5,6.0E-5,-6.0E-5,6.0E-5,0,-3.0E-5,0,0,-6.0E-5,0,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,0,-3.0E-5,0,-3.0E-5,0,0,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-6.0E-5,6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,0,0,-3.0E-5,0,-3.0E-5,0,0,-3.0E-5,0,-3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,-3.0E-5,3.0E-5,-3.0E-5,0,-3.0E-5,0,-3.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,-6.0E-5,3.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-6.0E-5,0,4.0E-5,-6.0E-5,0,0,-6.0E-5,3.0E-5,4.0E-5,-6.0E-5,0,0,0,-4.0E-5,-6.0E-5,-2.0E-5,-15.88501,24.14755,7.25766,27.97704,8.45639,27.63996,-6.0E-5,-2.0E-5,-6.0E-5,-2.0E-5,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,20.14196,0.56873,20.14884,-0.21915,16.40837,-1.58496,11.58151,-11.7309,0.37015,-4.85554,0.16022,-4.86614,4.0E-5,-6.0E-5,0,0,3.0E-5,-3.0E-5,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-32.81676,-12.45938,-35.10101,-0.30017,-34.99226,2.78079,-7.72185,2.23502,-7.8739,1.61874,-7.99338,0.85056,-21.86118,-0.49329,-21.71152,-2.60098,-20.94153,-6.29172,-19.93359,-8.98814,-12.04089,3.64125,-14.95947,2.3022,-13.80969,0.32066,-15.73022,-0.81049,-11.45898,-0.07294,-11.42226,0.93271,-11.4603,0.02835,-11.40939,-1.07846,-18.55936,0.58215,-18.52805,-1.2121,-18.04468,-4.37643,-13.77896,0.60046,-13.7384,-1.2133,-13.37756,-3.33739,-12.2749,1.27342,-14.28076,-0.22295,-16.36969,-1.35783,-6.0E-5,-2.0E-5,5.0E-5,0,-2.82169,-17.00729,-2.46448,-14.85418,4.0E-5,-6.0E-5,-6.0E-5,3.0E-5,-1.46439,-8.82623,-1.31543,-7.92809,-1.10992,-6.68966,-1.02371,-6.16998,-1.18591,-7.14785,-1.36481,-8.22652,-0.93686,-5.64651,-1.05206,-6.3413,-1.31223,-7.90881,-1.57056,-9.46612,-1.3873,-8.36199,-1.17612,-7.08907,-1.32928,-8.01211,-0.84509,-5.09344,-23.08304,1.6066,-23.01654,-2.38095,-22.50476,-5.38278,-12.38202,2.54651,-12.62036,0.58711,-15.02991,-0.83086,-1.58633,-9.56142,-24.21736,-5.43936,-24.60036,3.29974,-24.21712,5.44556,-24.57144,3.51672,-14.67059,-0.34517,-16.72638,-1.50173,-6.0E-5,0,-7.97382,0.00757,-9.07715,-0.6467,-12.75507,2.36398,-15.34497,0.90794,-18.0415,-0.21636,-11.84271,4.04813,-12.32141,2.15456,-14.99158,0.77748,-12.79285,0.96336,-12.78052,-1.04039,-17.6261,-0.49261,-17.409,-2.80194,-16.75665,-5.47716,-21.79681,-0.04507,-21.46588,-3.78665,-20.78278,-6.5723,-9.61081,1.11224,-9.66833,0.35004,-9.65668,-0.58542,-9.41296,-2.23477,-15.1702,3.14603,-14.83687,4.46405,-15.14316,3.27939,0,0,0,0,0,0,0,0,7.45702,0.21085,7.45959,-0.08096,-6.6649,-3.35132]}]},"raptor-front-arm":{"raptor/raptor-front-arm":[{"time":0,"vertices":[0.63858,10.11987,6.64316,-7.66093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.63858,10.11987,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093,6.64316,-7.66093,6.64316,-7.66093,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093]},{"time":0.5333,"vertices":[2.12625,-9.42834,-6.35226,7.01714,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.12625,-9.42834,-6.35226,7.01714,2.12625,-9.42834,-6.35226,7.01714,-6.35226,7.01714,-6.35226,7.01714,-6.35226,7.01714,2.12625,-9.42834,-6.35226,7.01714,2.12625,-9.42834,-6.35226,7.01714]},{"time":1.0667,"vertices":[0.63858,10.11987,6.64316,-7.66093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.63858,10.11987,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093,6.64316,-7.66093,6.64316,-7.66093,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093,0.63858,10.11987,6.64316,-7.66093]}]},"raptor-front-leg":{"raptor/raptor-front-leg":[{"time":0,"offset":154,"vertices":[5.88568,2.31329,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,3.24279,5.42923,-3.33963,5.37029,3.24279,5.42923,5.48474,1.33588,-3.33963,5.37029,3.24279,5.42923,5.48474,1.33588,6.45844,-3.76048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.88568,2.31329,6.32144,0.17871]},{"time":0.2667},{"time":0.5333,"offset":148,"vertices":[-18.2879,9.64194,8.54771,-3.97604,0,0,-6.20459,-38.80288,-1.60495,-18.19489,18.00257,-3.08813,1.01712,-11.54924,11.59372,0.06879,1.01712,-11.54924,11.59372,0.06879,1.01712,-11.54924,11.59372,0.06879,1.01712,-11.54924,11.59372,0.06879,7.2315,-9.06223,11.59372,0.06879,7.2315,-9.06223,-5.34506,-9.90634,11.59372,0.06879,7.2315,-9.06223,-5.34506,-9.90634,-15.37766,0.70782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.90936,-20.67399,-20.69142,0.32318,0.83218,-9.44935,9.48574,0.05627,0.83218,-9.44935,9.48574,0.05627,0.32794,-15.86422,15.83783,-0.97108,0.42538,-16.96904,16.94692,-0.96432,0.83218,-9.44935,9.48574,0.05627,0,0,0,0,0,0,0,0,0,0,-2.43991,-8.71271,-8.55199,2.95432,8.48388,-3.14455,-4.47107,-11.33224,-11.04593,5.13776,10.92845,-5.38319]},{"time":0.6,"offset":148,"vertices":[5.8644,-1.96475]},{"time":0.6667,"offset":52,"vertices":[2.83282,3.82607,2.88747,-3.47459,6.13686,-0.65051,1.80194,5.80962,-3.46157,8.71898,1.95515,17.84987,-2.16496,11.59793,-21.96982,-6.69659,-9.24968,5.30598,3.17815,-2.1165,0.26888,0.03062,0.02821,0.2688,-10.98312,-7.06466,-4.71954,-11.86687,-13.45984,4.74478,-3.79447,-8.00033,0,0,0,0,4.81293,-9.78431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.41243,0.36704,-0.00642,-0.55221,0,0,0,0,0.7433,-1.29713,0.49036,1.41172,1.3683,-5.24968,3.06253,4.47641,-1.30437,-1.14192,1.71709,-0.23523,-1.14153,-2.38019,2.54447,0.70039,0,0,0,0,7.63262,-3.45871,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.34303,-8.30955,8.08327,3.22951,-3.09877,0.10198,-0.71957,-2.98701,0,0,0,0,0,0,0,0,-0.68984,-0.87758,-1.06615,-0.32834,-1.4312,-0.38682,1.22995,-0.8266]},{"time":0.7,"offset":52,"vertices":[1.41641,1.91303,1.44373,-1.7373,3.06843,-0.32526,0.90097,2.90481,-1.73079,4.35949,0.97757,8.92494,-1.08248,5.79897,-7.52768,-11.41519,-8.67229,-4.663,-0.13032,-9.51013,0.13444,0.01531,0.01411,0.1344,-5.49157,-3.53233,-2.35977,-5.93344,-0.53535,10.74624,-0.16897,6.33698,12.85229,2.43229,8.83852,8.18031,26.96328,-11.50604,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.61864,0.55055,-0.00964,-0.82832,0,0,0,0,1.11495,-1.9457,0.73553,2.11757,2.05245,-7.87452,4.59379,6.71461,-1.95655,-1.71288,2.57563,-0.35284,-1.71229,-3.57028,3.8167,1.05059,0,0,0,0,3.81631,-1.72936,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.67152,-4.15478,4.04164,1.61476,-0.32874,3.11779,-0.67256,1.78751,0,0,0,0,0,0,0,0,-1.03475,-1.31637,-1.59922,-0.49251,-2.1468,-0.58024,1.84492,-1.2399]},{"time":0.7333,"offset":80,"vertices":[2.70691,7.35512,-0.12915,7.83603,0,0,0,0,14.23546,-11.27834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.82486,0.73407,-0.01285,-1.10443,0,0,0,0,1.4866,-2.59427,0.98071,2.82343,2.7366,-10.49936,6.12506,8.95282,-2.60873,-2.28384,3.43417,-0.47046,-2.28305,-4.76038,5.08893,1.40079,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.37967,-1.75516,-2.1323,-0.65668,-2.8624,-0.77365,2.4599,-1.6532]},{"time":0.8,"offset":148,"vertices":[4.33227,5.00964]},{"time":0.9,"offset":66,"vertices":[-2.62872,-4.62305,-2.90607,8.52032,-0.22961,8.99833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.00874,9.84058]},{"time":1.0667,"offset":154,"vertices":[5.88568,2.31329,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,5.88568,2.31329,-3.33963,5.37029,3.24279,5.42923,-3.33963,5.37029,3.24279,5.42923,5.48474,1.33588,-3.33963,5.37029,3.24279,5.42923,5.48474,1.33588,6.45844,-3.76048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5.88568,2.31329,6.32144,0.17871]}]},"raptor-jaw":{"raptor/raptor-jaw":[{"time":0,"offset":2,"vertices":[5.26251,2.94318,2.28296,1.27679,4.98703,2.78809,0.60455,0.33795,0,0,1.34418,0.75165,3.53967,1.97955,5.7912,3.23895,6.41522,3.58789,0,0,0,0,0,0,0,0,0,0,3.79169,2.11963,3.79169,2.11963]},{"time":0.2667},{"time":0.5,"offset":2,"vertices":[-9.47989,-8.20044,-9.31476,-8.05737,-8.25192,-7.13806,-1.64343,-1.42157,-1.36691,-1.18243,-4.30679,-3.72552,-8.40979,-7.27472,-8.7276,3.38159,-6.24896,-5.40546,0,0,0,0,0,0,0,0,-9.43863,-8.16437,-5.37057,-4.64551,-5.37057,-4.64551]},{"time":0.7333},{"time":1.0667,"offset":2,"vertices":[5.26251,2.94318,2.28296,1.27679,4.98703,2.78809,0.60455,0.33795,0,0,1.34418,0.75165,3.53967,1.97955,5.7912,3.23895,6.41522,3.58789,0,0,0,0,0,0,0,0,0,0,3.79169,2.11963,3.79169,2.11963]}]},"raptor-saddle-w-shadow":{"raptor/raptor-saddle-w-shadow":[{"time":0,"vertices":[-0.00729,4.41981,0,0,-0.01709,10.45464,-0.01709,10.45464,-0.01709,10.45464,0,0,0,0,0.01511,-8.47841,-0.0061,3.66493,-0.0061,3.66493,-0.0061,3.66493,-0.0061,3.66493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01511,-8.47841,-0.00729,4.41981,0,0,0,0,-0.0061,3.66493,-0.0061,3.66493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0,0,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841]},{"time":0.2667},{"time":0.5333,"vertices":[0.22061,-8.83728,0,0,0.17395,-6.96783,0.17395,-6.96783,0.17395,-6.96783,0,0,0,0,-0.1377,5.51426,0.12805,-5.12938,0,0,0,0,0.12805,-5.12938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.1377,5.51426,0.22061,-8.83728,0,0,0,0,0.12805,-5.12938,0.12805,-5.12938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,0,0,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426,-0.1377,5.51426]},{"time":0.8},{"time":1.0667,"vertices":[-0.00729,4.41981,0,0,-0.01709,10.45464,-0.01709,10.45464,-0.01709,10.45464,0,0,0,0,0.01511,-8.47841,-0.0061,3.66493,-0.0061,3.66493,-0.0061,3.66493,-0.0061,3.66493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01511,-8.47841,-0.00729,4.41981,0,0,0,0,-0.0061,3.66493,-0.0061,3.66493,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0,0,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841,0.01511,-8.47841]}]}}}}}},"spineboy":{"skeleton":{"hash":"eEIKcWyB+VV4QsqkYBQDzsSSwPg","spine":"3.6.39","width":419.84,"height":685.99},"bones":[{"name":"root","rotation":0.28},{"name":"hip controller","parent":"root","x":-56.6,"y":301.58},{"name":"hip","parent":"hip controller","x":56.6,"y":-54.31},{"name":"crosshair","parent":"root","x":377.27,"y":391.04},{"name":"aim-constraint-target","parent":"hip","length":26.24,"rotation":19.61,"x":1.02,"y":5.62},{"name":"rear-foot-ik","parent":"root","x":61.91,"y":0.42},{"name":"rear-ankle-ik","parent":"rear-foot-ik","x":-33.91,"y":37.34},{"name":"rear-thigh","parent":"hip","length":85.72,"rotation":-72.54,"x":8.91,"y":-5.63},{"name":"rear-shin","parent":"rear-thigh","length":121.88,"rotation":-19.83,"x":86.1,"y":-1.33},{"name":"rear-foot","parent":"rear-shin","length":51.58,"rotation":45.78,"x":121.46,"y":-0.76},{"name":"back-foot-tip","parent":"rear-foot","length":50.3,"rotation":-0.85,"x":51.17,"y":0.24,"transform":"noRotationOrReflection"},{"name":"board","parent":"root","x":-13.72,"y":108.59},{"name":"board target","parent":"root","rotation":0.18,"x":230.14,"y":69},{"name":"clipping","parent":"root"},{"name":"hoverboard controller","parent":"board","rotation":0.18,"x":3.58,"y":-40.36},{"name":"exhaust1","parent":"hoverboard controller","rotation":3.02,"x":-249.68,"y":53.39},{"name":"exhaust2","parent":"hoverboard controller","rotation":26.34,"x":-191.6,"y":-22.92},{"name":"exhaust3","parent":"hoverboard controller","rotation":-12.34,"x":-236.03,"y":80.54,"scaleX":0.785,"scaleY":0.785},{"name":"portal-root","parent":"root","x":12.9,"y":328.54,"scaleX":2.033,"scaleY":2.033},{"name":"flare1","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare2","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare3","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare4","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare5","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare6","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare7","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare8","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare9","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"flare10","parent":"portal-root","x":-6.34,"y":-161.57},{"name":"front-foot-ik","parent":"root","x":-13.53,"y":0.04},{"name":"front-ankle-ik","parent":"front-foot-ik","x":-28.4,"y":29.06},{"name":"torso","parent":"hip","length":42.52,"rotation":103.82,"x":-1.62,"y":4.9},{"name":"torso2","parent":"torso","length":42.52,"x":42.52},{"name":"torso3","parent":"torso2","length":42.52,"x":42.52},{"name":"front-upper-arm","parent":"torso3","length":69.45,"rotation":168.38,"x":18.72,"y":19.33},{"name":"front-bracer","parent":"front-upper-arm","length":40.57,"rotation":18.3,"x":68.8,"y":-0.68},{"name":"front-fist","parent":"front-bracer","length":65.39,"rotation":12.43,"x":40.57,"y":0.2},{"name":"front-thigh","parent":"hip","length":74.81,"rotation":-95.51,"x":-17.46,"y":-11.64},{"name":"front-shin","parent":"front-thigh","length":128.77,"rotation":-2.21,"x":78.69,"y":1.6},{"name":"front-foot","parent":"front-shin","length":41.01,"rotation":51.27,"x":128.76,"y":-0.34},{"name":"front-foot-tip","parent":"front-foot","length":56.03,"rotation":-1.68,"x":41.42,"y":-0.09,"transform":"noRotationOrReflection"},{"name":"rear-upper-arm","parent":"torso3","length":51.94,"rotation":-169.56,"x":7.32,"y":-19.22},{"name":"rear-bracer","parent":"rear-upper-arm","length":34.56,"rotation":23.15,"x":51.36},{"name":"gun","parent":"rear-bracer","length":43.11,"rotation":-5.43,"x":34.42,"y":-0.45},{"name":"gun-tip","parent":"gun","rotation":7.1,"x":200.78,"y":52.5},{"name":"neck","parent":"torso3","length":25.45,"rotation":-31.54,"x":42.46,"y":-0.31},{"name":"head","parent":"neck","length":131.79,"rotation":26.1,"x":27.66,"y":-0.26},{"name":"hair1","parent":"head","length":47.23,"rotation":-49.1,"x":149.83,"y":-59.77},{"name":"hair2","parent":"hair1","length":55.57,"rotation":50.42,"x":47.23,"y":0.19},{"name":"hair3","parent":"head","length":62.22,"rotation":-32.17,"x":164.14,"y":3.68},{"name":"hair4","parent":"hair3","length":80.28,"rotation":83.71,"x":62.22,"y":-0.04},{"name":"hoverboard-thruster-front","parent":"hoverboard controller","rotation":-29.2,"x":95.77,"y":-2.99,"transform":"noRotationOrReflection"},{"name":"hoverboard-thruster-rear","parent":"hoverboard controller","rotation":-29.2,"x":-76.47,"y":-4.88,"transform":"noRotationOrReflection"},{"name":"hoverglow-front","parent":"hoverboard-thruster-front","rotation":0.17,"x":-1.78,"y":-37.79},{"name":"hoverglow-rear","parent":"hoverboard-thruster-rear","rotation":0.17,"x":1.06,"y":-35.66},{"name":"muzzle","parent":"rear-bracer","rotation":3.06,"x":242.34,"y":34.26},{"name":"muzzle-ring","parent":"muzzle"},{"name":"muzzle-ring2","parent":"muzzle"},{"name":"muzzle-ring3","parent":"muzzle"},{"name":"muzzle-ring4","parent":"muzzle"},{"name":"portal","parent":"portal-root"},{"name":"portal-shade","parent":"portal-root"},{"name":"portal-streaks1","parent":"portal-root"},{"name":"portal-streaks2","parent":"portal-root"},{"name":"side-glow1","parent":"hoverboard controller","x":-110.56,"y":2.62},{"name":"side-glow2","parent":"hoverboard controller","x":-110.56,"y":2.62,"scaleX":0.738,"scaleY":0.738}],"slots":[{"name":"portal-bg","bone":"portal"},{"name":"portal-shade","bone":"portal-shade"},{"name":"portsl-streaks2","bone":"portal-streaks2","blend":"additive"},{"name":"portal-streaks1","bone":"portal-streaks1","blend":"additive"},{"name":"portal-flare8","bone":"flare8","color":"c3cbffff","blend":"additive"},{"name":"portal-flare9","bone":"flare9","color":"c3cbffff","blend":"additive"},{"name":"portal-flare10","bone":"flare10","color":"c3cbffff","blend":"additive"},{"name":"clipping","bone":"clipping"},{"name":"exhaust3","bone":"exhaust3","color":"5eb4ffff","blend":"additive"},{"name":"hoverboard-thruster-rear","bone":"hoverboard-thruster-rear"},{"name":"hoverboard-thruster-front","bone":"hoverboard-thruster-front"},{"name":"hoverboard-board","bone":"hoverboard controller"},{"name":"side-glow1","bone":"side-glow1","color":"ff8686ff","blend":"additive"},{"name":"side-glow3","bone":"side-glow1","color":"ff8686ff","blend":"additive"},{"name":"side-glow2","bone":"side-glow2","color":"ff8686ff","blend":"additive"},{"name":"hoverglow-front","bone":"hoverglow-front","color":"5eb4ffff","blend":"additive"},{"name":"hoverglow-rear","bone":"hoverglow-rear","color":"5eb4ffff","blend":"additive"},{"name":"exhaust1","bone":"exhaust2","color":"5eb4ffff","blend":"additive"},{"name":"exhaust2","bone":"exhaust1","color":"5eb4ffff","blend":"additive"},{"name":"rear-upper-arm","bone":"rear-upper-arm","attachment":"spineboy/rear-upper-arm"},{"name":"rear-bracer","bone":"rear-bracer","attachment":"spineboy/rear-bracer"},{"name":"gun","bone":"gun","attachment":"spineboy/gun"},{"name":"rear-foot","bone":"rear-foot","attachment":"spineboy/rear-foot"},{"name":"rear-thigh","bone":"rear-thigh","attachment":"spineboy/rear-thigh"},{"name":"rear-shin","bone":"rear-shin","attachment":"spineboy/rear-shin"},{"name":"neck","bone":"neck","attachment":"spineboy/neck"},{"name":"torso","bone":"torso","attachment":"spineboy/torso"},{"name":"front-upper-arm","bone":"front-upper-arm","attachment":"spineboy/front-upper-arm"},{"name":"head","bone":"head","attachment":"spineboy/head"},{"name":"eye","bone":"head","attachment":"spineboy/eye-indifferent"},{"name":"front-thigh","bone":"front-thigh","attachment":"spineboy/front-thigh"},{"name":"front-foot","bone":"front-foot","attachment":"spineboy/front-foot"},{"name":"front-shin","bone":"front-shin","attachment":"spineboy/front-shin"},{"name":"mouth","bone":"head","attachment":"spineboy/mouth-smile"},{"name":"goggles","bone":"head","attachment":"spineboy/goggles"},{"name":"front-bracer","bone":"front-bracer","attachment":"spineboy/front-bracer"},{"name":"front-fist","bone":"front-fist","attachment":"spineboy/front-fist-closed"},{"name":"muzzle","bone":"muzzle"},{"name":"head-bb","bone":"head"},{"name":"portal-flare1","bone":"flare1","color":"c3cbffff","blend":"additive"},{"name":"portal-flare2","bone":"flare2","color":"c3cbffff","blend":"additive"},{"name":"portal-flare3","bone":"flare3","color":"c3cbffff","blend":"additive"},{"name":"portal-flare4","bone":"flare4","color":"c3cbffff","blend":"additive"},{"name":"portal-flare5","bone":"flare5","color":"c3cbffff","blend":"additive"},{"name":"portal-flare6","bone":"flare6","color":"c3cbffff","blend":"additive"},{"name":"portal-flare7","bone":"flare7","color":"c3cbffff","blend":"additive"},{"name":"crosshair","bone":"crosshair"},{"name":"muzzle-glow","bone":"gun-tip","color":"ffffff00","blend":"additive"},{"name":"muzzle-ring","bone":"muzzle-ring","color":"d8baffff","blend":"additive"},{"name":"muzzle-ring2","bone":"muzzle-ring2","color":"d8baffff","blend":"additive"},{"name":"muzzle-ring3","bone":"muzzle-ring3","color":"d8baffff","blend":"additive"},{"name":"muzzle-ring4","bone":"muzzle-ring4","color":"d8baffff","blend":"additive"}],"ik":[{"name":"aim-ik","order":12,"bones":["rear-upper-arm"],"target":"crosshair","mix":0},{"name":"aim-torso-ik","order":7,"bones":["aim-constraint-target"],"target":"crosshair"},{"name":"board-ik","order":0,"bones":["hoverboard controller"],"target":"board target"},{"name":"front-ankle-ik","order":3,"bones":["front-thigh","front-shin"],"target":"front-ankle-ik","bendPositive":false},{"name":"front-foot-ik","order":5,"bones":["front-foot"],"target":"front-foot-ik"},{"name":"rear-ankle-ik","order":4,"bones":["rear-thigh","rear-shin"],"target":"rear-ankle-ik","bendPositive":false},{"name":"rear-foot-ik","order":6,"bones":["rear-foot"],"target":"rear-foot-ik"}],"transform":[{"name":"aim-front-arm-transform","order":10,"bones":["front-upper-arm"],"target":"aim-constraint-target","rotation":-180,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"aim-head-transform","order":9,"bones":["head"],"target":"aim-constraint-target","rotation":84.3,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"aim-rear-arm-transform","order":11,"bones":["rear-upper-arm"],"target":"aim-constraint-target","x":57.7,"y":56.4,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"aim-torso-transform","order":8,"bones":["torso"],"target":"aim-constraint-target","rotation":69.5,"shearY":-36,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"front-foot-board","order":1,"bones":["front-foot-ik"],"target":"hoverboard controller","x":-69.8,"y":20.7,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"rear-foot-board","order":2,"bones":["rear-foot-ik"],"target":"hoverboard controller","x":86.6,"y":21.3,"rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"toes-board","order":13,"bones":["front-foot-tip","back-foot-tip"],"target":"hoverboard controller","rotateMix":0,"translateMix":0,"scaleMix":0,"shearMix":0}],"skins":{"default":{"clipping":{"clipping":{"type":"clipping","end":"head-bb","vertexCount":9,"vertices":[66.76,509.48,19.98,434.54,5.34,336.28,22.19,247.93,77.98,159.54,182.21,-97.56,1452.26,-99.8,1454.33,843.61,166.57,841.02]}},"crosshair":{"spineboy/crosshair":{"width":89,"height":89}},"exhaust1":{"spineboy/hoverglow-small":{"scaleX":0.463,"scaleY":0.813,"rotation":-83.07,"width":274,"height":75}},"exhaust2":{"spineboy/hoverglow-small":{"x":0.01,"y":-0.76,"scaleX":0.421,"scaleY":0.84,"rotation":-89.25,"width":274,"height":75}},"exhaust3":{"spineboy/hoverglow-small":{"scaleX":0.463,"scaleY":0.813,"rotation":-83.07,"width":274,"height":75}},"eye":{"spineboy/eye-indifferent":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[73.41,-91.35,23.16,-13.11,98.03,34.99,148.28,-43.25],"hull":4},"spineboy/eye-surprised":{"x":85.72,"y":-28.18,"rotation":-70.63,"width":93,"height":89}},"front-bracer":{"spineboy/front-bracer":{"x":12.03,"y":-1.68,"rotation":79.6,"width":58,"height":80}},"front-fist":{"spineboy/front-fist-closed":{"x":35.5,"y":6,"rotation":67.16,"width":75,"height":82},"spineboy/front-fist-open":{"x":39.57,"y":7.76,"rotation":67.16,"width":86,"height":87}},"front-foot":{"spineboy/front-foot":{"type":"mesh","uvs":[0.59417,0.23422,0.62257,0.30336,0.6501,0.37036,0.67637,0.38404,0.72068,0.4071,0.76264,0.42894,1,0.70375,1,1,0.65517,1,0.46923,0.99999,0,1,0,0.39197,0,0,0.17846,0,0.49796,0],"triangles":[8,6,7,6,8,5,5,8,4,4,8,3,8,9,3,9,10,2,1,2,10,9,2,3,0,1,11,0,11,13,0,13,14,11,1,10,11,12,13],"vertices":[2,39,18.17,41.57,0.7896,40,12.46,46.05,0.2104,2,39,24.08,40.76,0.71228,40,16.12,41.34,0.28772,2,39,29.81,39.98,0.55344,40,19.67,36.78,0.44656,2,39,32.81,41.67,0.38554,40,23,35.89,0.61446,2,39,37.86,44.52,0.25567,40,28.61,34.4,0.74433,2,39,42.65,47.22,0.17384,40,33.92,32.99,0.82616,2,39,77.17,55.15,0.14653,40,64.15,14.56,0.85347,2,39,91.7,40.78,0.21579,40,64.51,-5.87,0.78421,2,39,61.15,9.88,0.3654,40,21.08,-6.64,0.6346,2,39,44.67,-6.77,0.5684,40,-2.34,-6.97,0.4316,2,39,3.1,-48.81,0.74826,40,-61.45,-8.09,0.25174,2,39,-26.73,-19.31,0.9085,40,-62.19,33.85,0.0915,2,39,-45.96,-0.29,0.95152,40,-62.66,60.88,0.04848,2,39,-30.15,15.69,0.93027,40,-40.19,61.28,0.06973,2,39,-1.84,44.32,0.86778,40,0.06,61.99,0.13222],"hull":15}},"front-shin":{"spineboy/front-shin":{"type":"mesh","uvs":[0.90031,0.05785,1,0.12828,1,0.21619,0.9025,0.31002,0.78736,0.35684,0.78081,0.39874,0.77215,0.45415,0.77098,0.51572,0.84094,0.63751,0.93095,0.7491,0.95531,0.7793,0.78126,0.87679,0.5613,1,0.2687,1,0,1,0.00279,0.96112,0.01358,0.81038,0.02822,0.60605,0.08324,0.45142,0.18908,0.31882,0.29577,0.2398,0.30236,0.14941,0.37875,0.05902,0.53284,0,0.70538,0,0.41094,0.71968,0.40743,0.54751,0.41094,0.4536,0.4724,0.35186,0.33367,0.27829,0.50226,0.31664,0.65328,0.67507,0.60762,0.52716,0.6006,0.45125,0.62747,0.37543,0.6573,0.3385,0.27843,0.32924,0.18967,0.45203,0.16509,0.58586,0.18265,0.7682,0.50532,0.24634,0.59473,0.17967,0.60161,0.10611,0.51392,0.04327,0.72198,0.28849,0.82343,0.20266,0.86814,0.11377,0.79592,0.04634,0.44858,0.15515,0.25466,0.96219,0.53169,0.9448,0.7531,0.8324],"triangles":[24,0,47,43,23,24,47,43,24,43,22,23,42,43,47,46,47,0,42,47,46,46,0,1,48,22,43,48,43,42,21,22,48,41,48,42,45,42,46,41,42,45,46,1,2,45,46,2,40,48,41,48,20,21,29,48,40,29,20,48,44,41,45,40,41,44,3,45,2,44,45,3,30,29,40,35,30,40,36,19,20,36,20,29,44,35,40,28,29,30,4,44,3,35,44,4,34,30,35,5,35,4,34,28,30,33,28,34,37,19,36,18,19,37,27,29,28,27,28,33,36,29,27,37,36,27,5,34,35,6,34,5,33,34,6,6,32,33,7,32,6,26,37,27,38,18,37,38,37,26,17,18,38,31,32,7,31,7,8,32,25,26,38,26,25,27,33,32,32,26,27,39,38,25,17,38,39,16,17,39,51,31,8,51,8,9,11,51,9,11,9,10,31,50,25,31,25,32,50,31,51,49,39,25,49,25,50,15,16,39,49,15,39,13,49,50,14,15,49,13,14,49,12,50,51,12,51,11,13,50,12],"vertices":[-23.66,19.37,-11.73,28.98,4.34,30.83,22.41,24.87,32.05,16.48,39.77,16.83,49.98,17.3,61.25,18.5,82.85,26.78,102.4,36.46,107.69,39.09,127.15,26.97,151.74,11.65,154.49,-12.18,157.02,-34.07,149.89,-34.66,122.23,-36.97,84.75,-40.09,55.97,-38.88,30.73,-33.05,15.29,-26.03,-1.3,-27.41,-18.54,-23.09,-30.78,-11.79,-32.4,2.27,101.92,-6.52,70.48,-10.44,53.28,-12.14,34.11,-9.28,21.96,-22.13,27.39,-7.59,91.48,12.28,64.88,5.44,51.07,3.26,36.95,3.85,29.92,5.5,31.8,-25.56,55.08,-30.19,79.77,-29.37,112.93,-24.09,14.51,-8.83,1.48,-2.95,-12.03,-3.94,-22.69,-12.41,20.17,9.71,3.53,16.16,-13.14,17.93,-24.78,10.62,-1.62,-15.37,147.71,-14.13,141.93,8.07,119.3,23.74],"hull":25}},"front-thigh":{"spineboy/front-thigh":{"x":42.48,"y":4.45,"rotation":84.87,"width":48,"height":112}},"front-upper-arm":{"spineboy/front-upper-arm":{"x":28.31,"y":7.37,"rotation":97.9,"width":54,"height":97}},"goggles":{"spineboy/goggles":{"type":"mesh","uvs":[0.53653,0.04114,0.72922,0.16036,0.91667,0.33223,0.97046,0.31329,1,0.48053,0.95756,0.5733,0.88825,0.6328,0.86878,0.78962,0.77404,0.8675,0.72628,1,0.60714,0.93863,0.49601,0.88138,0.41558,0.75027,0.32547,0.70084,0.2782,0.58257,0.1721,0.63281,0.17229,0.75071,0.10781,0.79898,0,0.32304,0,0.12476,0.07373,0.07344,0.15423,0.10734,0.23165,0.13994,0.30313,0.02256,0.34802,0,0.42979,0.69183,0.39476,0.51042,0.39488,0.31512,0.45878,0.23198,0.56501,0.28109,0.69961,0.39216,0.82039,0.54204,0.85738,0.62343,0.91107,0.51407,0.72639,0.32147,0.58764,0.19609,0.48075,0.11269,0.37823,0.05501,0.3287,0.17866,0.319,0.305,0.36036,0.53799,0.40327,0.70072,0.30059,0.55838,0.21957,0.2815,0.09963,0.28943,0.56863,0.4368,0.4911,0.37156,0.51185,0.52093,0.67018,0.59304,0.7619,0.68575,0.73296,0.43355],"triangles":[49,8,48,9,48,8,12,25,11,48,9,10,47,48,10,47,10,25,25,10,11,8,49,7,17,15,16,17,18,15,49,32,7,7,32,6,41,42,40,12,41,25,41,12,42,13,14,42,12,13,42,41,40,25,40,26,25,25,26,47,49,31,32,31,49,50,18,44,15,42,14,44,14,15,44,5,6,33,6,32,33,32,31,33,47,45,48,49,48,50,50,45,30,50,48,45,42,44,43,5,33,4,42,39,40,42,43,39,31,50,33,40,39,26,45,47,46,33,2,4,2,33,34,47,26,46,26,27,46,26,39,27,2,3,4,30,45,29,30,34,50,33,50,34,45,46,29,30,29,34,27,28,46,46,28,29,18,19,44,29,35,34,2,34,1,34,35,1,28,27,38,27,39,38,39,43,38,44,19,21,44,21,43,21,19,20,43,22,38,43,21,22,29,28,35,28,36,35,28,38,36,36,0,35,35,0,1,22,23,38,38,37,36,37,23,24,37,38,23,36,37,0,37,24,0],"vertices":[172.09,22.81,170.1,-31.19,159.41,-86.8,167.03,-99.01,143.4,-115.48,125.21,-110.14,109.89,-96.35,83.65,-100.19,63.25,-81.16,38.37,-76.69,37.67,-43.98,37.01,-13.47,50.58,13.55,50.52,38.45,64.95,56.6,47.9,79.96,29.45,73.42,16.31,86.64,81.51,139.38,112.56,150.3,126.97,134.97,128.63,113.28,130.23,92.43,154.79,81.29,162.21,71.48,60.96,13.27,86.33,31.88,116.93,42.6,135.47,31.44,136.98,2.59,131.23,-36.66,118.22,-74.65,108.69,-88.24,130.46,-95.44,144.63,-39.36,152.25,1.7,156.06,32.6,156.22,61.02,132.57,66.41,111.94,61.84,79.04,38.83,57.27,19.31,70.67,52.42,107.02,87.61,95.4,116.7,112.91,-6.87,116.42,15.8,94.82,2.47,97.24,-40.48,90.66,-68.16,127.65,-47.15],"hull":25}},"gun":{"spineboy/gun":{"x":77.3,"y":16.4,"rotation":60.83,"width":210,"height":203}},"head":{"spineboy/head":{"type":"mesh","uvs":[0.75919,0.06107,0.88392,0.17893,0.90174,0.30856,0.94224,0.1966,1,0.26584,1,0.422,0.95864,0.46993,0.92118,0.51333,0.85957,0.5347,0.78388,0.65605,0.74384,0.74838,0.85116,0.75151,0.84828,0.82564,0.81781,0.85367,0.75599,0.85906,0.76237,0.90468,0.65875,1,0.38337,1,0.1858,0.85404,0.12742,0.81091,0.06025,0.69209,0,0.58552,0,0.41021,0.0853,0.20692,0.24243,0.14504,0.5,0.1421,0.50324,0.07433,0.41738,0,0.57614,0,0.85059,0.36087,0.73431,0.43206,0.68481,0.31271,0.72165,0.16718,0.55931,0.04154,0.44764,0.22895,0.23926,0.26559,0.71272,0.44036,0.56993,0.383,0.41678,0.33511,0.293,0.31497,0.70802,0.44502,0.56676,0.38976,0.41521,0.34416,0.28754,0.33017,0.88988,0.50177,0.30389,0.73463,0.2646,0.65675,0.21414,0.61584,0.14613,0.62194,0.10316,0.66636,0.10358,0.72557,0.14505,0.79164,0.20263,0.81355,0.27873,0.80159,0.34947,0.7376,0.23073,0.57073,0.08878,0.60707,0.29461,0.8129,0.73006,0.87883,0.69805,0.87348,0.66166,0.79681],"triangles":[36,37,31,30,31,29,37,41,38,31,37,34,31,32,29,37,38,34,34,25,31,2,32,1,31,25,32,33,32,25,33,25,26,32,0,1,32,33,0,0,33,28,26,27,33,33,27,28,6,29,5,29,2,5,2,4,5,2,29,32,2,3,4,36,30,44,44,30,6,30,29,6,30,36,31,16,58,15,16,59,58,59,16,60,18,57,17,57,54,17,16,17,60,17,54,60,58,14,15,58,59,14,59,60,14,60,10,14,14,10,13,18,53,57,18,52,53,19,51,18,18,51,52,13,10,12,12,10,11,53,52,45,57,45,54,57,53,45,20,50,19,46,45,52,47,46,50,50,48,47,19,50,51,46,52,51,54,41,60,10,60,9,60,41,40,46,51,50,9,60,40,55,42,41,54,55,41,46,54,45,20,49,50,50,49,48,20,56,49,20,21,56,49,56,48,47,55,46,42,55,43,55,54,46,9,40,8,47,48,55,55,48,56,55,56,22,56,21,22,55,22,43,8,44,7,40,36,8,8,36,44,7,44,6,41,37,40,40,37,36,43,22,39,22,23,35,41,42,38,43,39,42,42,39,38,38,39,34,39,22,35,39,35,34,35,24,34,35,23,24,34,24,25],"vertices":[1,50,41.97,-41.8,1,3,48,73.47,27.55,0.18925,50,-5.75,-51.71,0.72419,49,112.98,-11.43,0.08656,3,48,38.23,10.99,0.84284,50,-41.02,-35.22,0.09706,49,92.72,-44.68,0.06011,1,48,73.36,10.89,1,1,48,58.59,-10.38,1,2,47,75.49,-4.56,0.10258,48,14.36,-24.8,0.89742,2,47,59.82,-13.73,0.41734,48,-2.7,-18.57,0.58266,1,46,163.07,-108.68,1,1,46,151.52,-95.05,1,1,46,110.61,-87.69,1,1,46,81.05,-86.58,1,1,46,89.82,-114.32,1,1,46,68.72,-120.91,1,1,46,58.1,-115.89,1,1,46,51.03,-100.63,1,1,46,38.79,-106.76,1,1,46,2.68,-89.7,1,1,46,-22.07,-19.3,1,1,46,1.2,45.63,1,1,46,8.07,64.82,1,1,46,35.44,93.73,1,1,46,59.98,119.66,1,1,46,109.26,136.99,1,1,46,174.07,135.27,1,2,46,205.59,101.22,0.83763,49,-16.8,104.64,0.16237,2,50,58.94,30.5,0.60736,49,38.37,61.9,0.39264,2,50,75.56,19.01,0.94502,49,51.63,77.15,0.05498,1,50,106.7,26.9,1,1,50,83.79,-9.51,1,4,47,44.52,27.24,0.19601,48,19.12,19.33,0.58067,50,-46.83,-15.19,0.07455,49,72.17,-48.25,0.14877,2,47,7.42,19.08,0.79203,49,34.31,-45.25,0.20797,1,49,45.94,-9.06,1,1,50,20.62,-16.35,1,1,50,75.74,0.94,1,3,46,200.44,40.47,0.4822,50,44.59,56.29,0.1495,49,11.17,50.47,0.3683,1,46,171.41,90.12,1,2,47,1.07,18.93,0.79203,49,28.19,-43.54,0.20797,3,46,168.13,-6.01,0.11484,47,-28.64,49.04,0.13133,49,8.54,-6.09,0.75382,2,46,167.83,37.87,0.27101,49,-15.06,30.91,0.72899,1,46,162.36,71.5,1,1,46,163.11,-47.44,1,1,46,165.94,-5.87,1,1,46,165.14,37.38,1,1,46,157.6,71.4,1,1,46,163.5,-99.54,1,1,46,45.38,27.24,1,1,46,63.74,44.98,1,1,46,70.7,61.93,1,1,46,62.88,78.71,1,1,46,46.53,85.3,1,1,46,29.92,79.34,1,1,46,15.08,62.21,1,1,46,14.09,45.33,1,1,46,24.3,27.06,1,1,46,48.64,15.3,1,1,46,84.87,62.14,1,1,46,61.9,94.84,1,1,46,22.54,21.88,1,1,46,43.15,-95.95,1,1,46,41.77,-87.24,1,1,46,60.05,-70.36,1],"hull":29}},"head-bb":{"head":{"type":"boundingbox","vertexCount":6,"vertices":[-19.14,-70.3,40.8,-118.08,257.78,-115.62,285.17,57.18,120.77,164.95,-5.07,76.95]}},"hoverboard-board":{"spineboy/hoverboard-board":{"type":"mesh","uvs":[0.13865,0.56624,0.11428,0.51461,0.07619,0.52107,0.02364,0.52998,0.01281,0.53182,0,0.37979,0,0.2206,0.00519,0.10825,0.01038,0.10726,0.03834,0.10194,0.05091,0,0.08326,0,0.10933,0.04206,0.1382,0.08865,0.18916,0.24067,0.22234,0.4063,0.23886,0.44063,0.83412,0.44034,0.88444,0.38296,0.92591,0.32639,0.95996,0.28841,0.98612,0.28542,1,0.38675,0.99494,0.47104,0.97883,0.53251,0.94409,0.62135,0.90206,0.69492,0.86569,0.71094,0.82822,0.70791,0.81286,0.77127,0.62931,0.77266,0.61364,0.70645,0.47166,0.70664,0.45901,0.77827,0.27747,0.76986,0.2658,0.70372,0.24976,0.71381,0.24601,0.77827,0.23042,0.84931,0.20926,0.90956,0.17299,1,0.15077,0.99967,0.12906,0.90192,0.10369,0.73693,0.10198,0.62482,0.09131,0.47272,0.09133,0.41325,0.15082,0.41868,0.21991,0.51856,0.06331,0.10816,0.08383,0.21696,0.08905,0.37532,0.15903,0.58726,0.17538,0.65706,0.20118,0.8029,0.17918,0.55644,0.22166,0.5802,0.86259,0.57962,0.92346,0.48534,0.96691,0.36881,0.0945,0.13259,0.12688,0.17831,0.15986,0.24682,0.18036,0.31268,0.20607,0.4235,0.16074,0.85403,0.13624,0.70122,0.12096,0.64049,0.02396,0.21811,0.02732,0.37839,0.02557,0.4972,0.14476,0.45736,0.18019,0.51689,0.19692,0.56636],"triangles":[10,11,12,9,10,12,49,9,12,60,49,12,13,60,12,61,60,13,50,49,60,50,60,61,68,8,9,68,9,49,68,49,50,7,8,68,6,7,68,61,13,14,62,61,14,50,61,62,63,62,14,59,20,21,19,20,59,51,50,62,51,62,63,51,69,68,51,68,50,6,68,69,5,6,69,18,19,59,15,63,14,59,21,22,47,51,63,47,46,51,47,63,64,15,64,63,64,15,16,71,46,47,23,59,22,69,51,70,45,46,71,70,51,2,58,18,59,58,59,23,17,18,58,70,5,69,2,51,46,1,45,71,47,48,71,47,64,48,48,72,71,1,71,72,16,48,64,45,2,46,2,45,1,70,4,5,3,70,2,3,4,70,24,58,23,72,0,1,73,55,72,55,0,72,48,73,72,57,17,58,25,57,58,56,48,16,73,48,56,56,16,17,56,17,57,52,0,55,24,25,58,44,0,52,67,44,52,52,56,53,73,52,55,56,52,73,67,52,53,26,57,25,66,67,53,56,32,35,53,56,35,56,57,32,28,31,57,57,31,32,57,27,28,26,27,57,36,53,35,43,44,67,43,67,66,34,35,32,29,31,28,30,31,29,53,54,66,53,36,54,33,34,32,37,54,36,65,43,66,38,54,37,54,65,66,39,65,54,42,43,65,38,39,54,40,42,65,40,41,42,65,39,40],"vertices":[-189.36,15.62,-201.35,23.47,-220.09,22.49,-245.95,21.13,-251.28,20.86,-257.58,43.96,-257.57,68.16,-255.02,85.24,-252.47,85.39,-238.71,86.2,-232.52,101.69,-216.61,101.69,-203.78,95.3,-189.58,88.21,-164.51,65.1,-148.19,39.93,-140.06,34.71,152.82,34.73,177.57,43.45,197.97,52.05,214.72,57.82,227.6,58.27,234.42,42.87,231.94,30.06,224.01,20.72,206.91,7.21,186.23,-3.97,168.34,-6.4,149.9,-5.94,142.35,-15.57,52.04,-15.77,44.33,-5.71,-25.52,-5.73,-31.75,-16.62,-121.07,-15.34,-126.81,-5.28,-134.7,-6.81,-136.54,-16.61,-144.22,-27.41,-154.63,-36.57,-172.47,-50.31,-183.41,-50.26,-194.09,-35.4,-206.56,-10.32,-207.4,6.72,-212.65,29.84,-212.64,38.88,-183.37,38.05,-149.38,22.86,-226.43,85.25,-216.33,68.71,-213.76,44.64,-179.34,12.42,-171.29,1.81,-158.6,-20.36,-169.42,17.11,-148.52,13.49,166.82,13.56,196.76,27.89,218.14,45.6,-211.08,81.54,-195.15,74.59,-178.93,64.17,-168.84,54.16,-156.19,37.31,-178.5,-28.13,-190.55,-4.9,-198.07,4.33,-245.79,68.54,-244.14,44.18,-245,26.12,-186.36,32.17,-168.92,23.12,-160.69,15.6],"hull":45}},"hoverboard-thruster-front":{"spineboy/hoverboard-thruster":{"x":0.02,"y":-7.08,"rotation":0.17,"width":60,"height":64}},"hoverboard-thruster-rear":{"spineboy/hoverboard-thruster":{"x":1.1,"y":-6.29,"rotation":0.17,"width":60,"height":64}},"hoverglow-front":{"spineboy/hoverglow-small":{"x":2.13,"y":-2,"scaleX":0.303,"scaleY":0.495,"rotation":0.15,"width":274,"height":75}},"hoverglow-rear":{"spineboy/hoverglow-small":{"x":1.39,"y":-2.09,"scaleX":0.303,"scaleY":0.495,"rotation":0.61,"width":274,"height":75}},"mouth":{"spineboy/mouth-grind":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,3,0,1,2,3],"vertices":[11.28,-85.88,-19.56,1.84,36.09,21.41,66.93,-66.32],"hull":4},"spineboy/mouth-oooo":{"x":23.69,"y":-32.24,"rotation":-70.63,"width":93,"height":59},"spineboy/mouth-smile":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[11.28,-85.89,-19.56,1.85,36.1,21.42,66.94,-66.32],"hull":4}},"muzzle":{"spineboy/muzzle01":{"x":151.97,"y":5.81,"rotation":0.15,"width":542,"height":349},"spineboy/muzzle02":{"x":187.25,"y":5.9,"rotation":0.15,"width":540,"height":337},"spineboy/muzzle03":{"x":231.96,"y":6.02,"rotation":0.15,"width":663,"height":425},"spineboy/muzzle04":{"x":231.96,"y":6.02,"rotation":0.15,"width":596,"height":358},"spineboy/muzzle05":{"x":293.8,"y":6.19,"scaleX":1.187,"scaleY":1.187,"rotation":0.15,"width":538,"height":299}},"muzzle-glow":{"spineboy/muzzle-glow":{"width":198,"height":198}},"muzzle-ring":{"spineboy/muzzle-ring":{"x":-1.3,"y":0.32,"scaleX":0.315,"scaleY":0.315,"width":49,"height":209}},"muzzle-ring2":{"spineboy/muzzle-ring":{"x":-1.3,"y":0.32,"scaleX":0.315,"scaleY":0.315,"width":49,"height":209}},"muzzle-ring3":{"spineboy/muzzle-ring":{"x":-1.3,"y":0.32,"scaleX":0.315,"scaleY":0.315,"width":49,"height":209}},"muzzle-ring4":{"spineboy/muzzle-ring":{"x":-1.3,"y":0.32,"scaleX":0.315,"scaleY":0.315,"width":49,"height":209}},"neck":{"spineboy/neck":{"x":9.77,"y":-3.01,"rotation":-55.22,"width":36,"height":41}},"portal-bg":{"spineboy/portal-bg":{"x":-3.1,"y":7.25,"scaleX":1.049,"scaleY":1.049,"width":266,"height":266}},"portal-flare1":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare10":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare2":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare3":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare4":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare5":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare6":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare7":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare8":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-flare9":{"spineboy/portal-flare1":{"width":111,"height":60},"spineboy/portal-flare2":{"width":114,"height":61},"spineboy/portal-flare3":{"width":115,"height":59}},"portal-shade":{"spineboy/portal-shade":{"width":266,"height":266}},"portal-streaks1":{"spineboy/portal-streaks1":{"scaleX":0.977,"scaleY":0.977,"width":252,"height":256}},"portsl-streaks2":{"spineboy/portsl-streaks2":{"x":-1.64,"y":2.79,"width":250,"height":249}},"rear-bracer":{"spineboy/rear-bracer":{"x":11.15,"y":-2.2,"rotation":66.17,"width":56,"height":72}},"rear-foot":{"spineboy/rear-foot":{"type":"mesh","uvs":[0.48368,0.1387,0.51991,0.21424,0.551,0.27907,0.58838,0.29816,0.63489,0.32191,0.77342,0.39267,1,0.73347,1,1,0.54831,0.99883,0.31161,1,0,1,0,0.41397,0.13631,0,0.41717,0],"triangles":[8,6,7,8,5,6,8,4,5,8,3,4,3,8,9,2,9,10,1,11,0,0,11,12,12,13,0,2,10,1,3,9,2,11,1,10],"vertices":[2,9,10.45,29.41,0.90802,10,-6.74,49.62,0.09198,2,9,16.56,29.27,0.84259,10,-2.65,45.09,0.15741,2,9,21.8,29.15,0.69807,10,0.85,41.2,0.30193,2,9,25.53,31.43,0.52955,10,5.08,40.05,0.47045,2,9,30.18,34.27,0.39303,10,10.33,38.62,0.60697,2,9,44.02,42.73,0.27525,10,25.98,34.36,0.72475,2,9,76.47,47.28,0.21597,10,51.56,13.9,0.78403,2,9,88.09,36.29,0.28719,10,51.55,-2.09,0.71281,2,9,52.94,-0.73,0.47576,10,0.52,-1.98,0.52424,2,9,34.63,-20.23,0.68757,10,-26.23,-2.03,0.31243,2,9,10.44,-45.81,0.84141,10,-61.43,-2,0.15859,2,9,-15.11,-21.64,0.93283,10,-61.4,33.15,0.06717,2,9,-22.57,6.61,0.95922,10,-45.98,57.97,0.04078,2,9,-0.76,29.67,0.94836,10,-14.25,57.95,0.05164],"hull":14}},"rear-shin":{"spineboy/rear-shin":{"x":58.29,"y":-2.75,"rotation":92.37,"width":75,"height":178}},"rear-thigh":{"spineboy/rear-thigh":{"x":33.11,"y":-4.11,"rotation":72.54,"width":65,"height":104}},"rear-upper-arm":{"spineboy/rear-upper-arm":{"x":21.13,"y":4.09,"rotation":89.33,"width":47,"height":87}},"side-glow1":{"spineboy/hoverglow-small":{"x":2.09,"scaleX":0.235,"scaleY":0.413,"width":274,"height":75}},"side-glow2":{"spineboy/hoverglow-small":{"x":2.09,"scaleX":0.235,"scaleY":0.413,"width":274,"height":75}},"side-glow3":{"spineboy/hoverglow-small":{"x":2.09,"scaleX":0.359,"scaleY":0.63,"width":274,"height":75}},"torso":{"spineboy/torso":{"type":"mesh","uvs":[0.6251,0.12672,1,0.26361,1,0.28871,1,0.66021,1,0.68245,0.92324,0.69259,0.95116,0.84965,0.77124,1,0.49655,1,0.27181,1,0.13842,0.77196,0.09886,0.6817,0.05635,0.58471,0,0.45614,0,0.33778,0,0.19436,0.14463,0,0.27802,0,0.72525,0.27835,0.76091,0.46216,0.84888,0.67963,0.68257,0.63249,0.53986,0.3847,0.25443,0.3217,0.30063,0.55174,0.39553,0.79507,0.26389,0.17007,0.5241,0.18674,0.71492,0.76655,0.82151,0.72956,0.27626,0.4304,0.62327,0.52952,0.3455,0.66679,0.53243,0.2914],"triangles":[27,26,16,17,27,16,0,27,17,15,16,26,18,0,1,27,0,18,18,1,2,33,27,18,23,15,26,33,23,26,33,26,27,14,15,23,22,33,18,23,33,22,13,14,23,19,18,2,30,23,22,13,23,30,22,18,19,31,22,19,24,30,22,24,22,31,12,13,30,12,30,24,21,31,19,19,2,3,32,24,31,32,31,21,3,20,19,11,12,24,11,24,32,20,21,19,5,20,3,4,5,3,29,21,20,29,20,5,28,21,29,10,11,32,25,32,21,25,21,28,10,32,25,29,5,6,9,10,25,8,25,28,9,25,8,7,28,29,7,29,6,8,28,7],"vertices":[2,32,87.11,-10.39,2.0E-4,33,44.59,-10.39,0.9998,2,32,59.65,-45.08,0.31254,33,17.13,-45.08,0.68746,3,31,97.67,-44.72,9.0E-5,32,55.15,-44.72,0.34485,33,12.63,-44.72,0.65506,3,31,31.01,-39.45,0.62346,32,-11.51,-39.45,0.37636,33,-54.03,-39.45,1.8E-4,2,31,27.01,-39.14,0.65234,32,-15.5,-39.14,0.34766,2,31,25.79,-31.5,0.75532,32,-16.73,-31.5,0.24468,2,31,-2.61,-32,0.99787,32,-45.13,-32,0.00213,1,31,-28.2,-12.29,1,1,31,-26.08,14.55,1,2,31,-24.35,36.5,0.99999,32,-66.87,36.5,1.0E-5,3,31,17.6,46.3,0.83312,32,-24.92,46.3,0.16679,33,-67.44,46.3,9.0E-5,3,31,34.1,48.89,0.59335,32,-8.42,48.89,0.39652,33,-50.94,48.89,0.01013,3,31,51.83,51.67,0.29262,32,9.32,51.67,0.63181,33,-33.2,51.67,0.07557,3,31,75.34,55.35,0.06656,32,32.82,55.35,0.62298,33,-9.7,55.35,0.31046,3,31,96.58,53.67,0.00696,32,54.06,53.67,0.37036,33,11.54,53.67,0.62268,2,32,79.79,51.64,0.10373,33,37.27,51.64,0.89627,2,32,113.55,34.76,6.3E-4,33,71.04,34.76,0.99937,1,33,70.01,21.72,1,2,32,59.13,-18.02,0.12067,33,16.61,-18.02,0.87933,3,31,68.39,-18.9,0.02967,32,25.87,-18.9,0.88563,33,-16.65,-18.9,0.08469,2,31,28.69,-24.42,0.77602,32,-13.83,-24.42,0.22398,2,31,38.43,-8.84,0.7254,32,-4.09,-8.84,0.2746,2,32,41.48,1.59,0.75167,33,-1.04,1.59,0.24833,3,31,97.5,28.59,9.3E-4,32,54.98,28.59,0.27863,33,12.46,28.59,0.72043,3,31,55.87,27.33,0.20205,32,13.35,27.33,0.75444,33,-29.17,27.33,0.04351,2,31,11.47,21.51,0.96642,32,-31.05,21.51,0.03358,2,32,82.12,25.51,0.02986,33,39.6,25.51,0.97014,2,32,77.12,0.33,0,33,34.6,0.33,1,2,31,14.12,-10.1,0.99252,32,-28.4,-10.1,0.00748,2,31,19.94,-21.03,0.92029,32,-22.58,-21.03,0.07971,3,31,77.83,27.99,0.02606,32,35.31,27.99,0.68013,33,-7.21,27.99,0.29381,2,31,57.36,-4.5,0.00647,32,14.84,-4.5,0.99353,3,31,34.87,24.58,0.67278,32,-7.64,24.58,0.32616,33,-50.16,24.58,0.00106,1,33,15.76,1,1],"hull":18}}}},"events":{"footstep":{}},"animations":{"aim":{"slots":{"crosshair":{"attachment":[{"time":0,"name":"spineboy/crosshair"}]}},"bones":{"front-fist":{"rotate":[{"time":0,"angle":36.08}]},"rear-bracer":{"rotate":[{"time":0,"angle":-26.55}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":62.31}]},"front-bracer":{"rotate":[{"time":0,"angle":9.11}]},"gun":{"rotate":[{"time":0,"angle":-0.31}]}},"ik":{"aim-ik":[{"time":0,"mix":0.995}]},"transform":{"aim-front-arm-transform":[{"time":0,"rotateMix":0.784,"translateMix":0,"scaleMix":0,"shearMix":0}],"aim-head-transform":[{"time":0,"rotateMix":0.659,"translateMix":0,"scaleMix":0,"shearMix":0}],"aim-torso-transform":[{"time":0,"rotateMix":0.423,"translateMix":0,"scaleMix":0,"shearMix":0}]},"deform":{"default":{"eye":{"spineboy/eye-indifferent":[{"time":0,"vertices":[-0.68777,-17.26618,-0.68777,-17.26618,-0.68777,-17.26618,-0.68777,-17.26618]}]},"goggles":{"spineboy/goggles":[{"time":0,"offset":16,"vertices":[-0.18341,-4.60426,-0.25211,-6.33094]}]},"head":{"spineboy/head":[{"time":0,"offset":34,"vertices":[-0.22919,-5.75542,-0.22919,-5.75542,-0.22919,-5.75542]}]},"mouth":{"spineboy/mouth-smile":[{"time":0,"vertices":[5.66431,2.18625,0.48294,-15.04339,0.53525,-20.30316,-7.72803,-7.72495]}]}}}},"death":{"slots":{"eye":{"attachment":[{"time":0,"name":"spineboy/eye-surprised"},{"time":0.4667,"name":"spineboy/eye-indifferent"}]},"front-fist":{"attachment":[{"time":0,"name":"spineboy/front-fist-open"}]},"mouth":{"attachment":[{"time":0,"name":"spineboy/mouth-oooo"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":-2.83},{"time":0.1333,"angle":-28.74},{"time":0.2333,"angle":11.43},{"time":0.3333,"angle":-50.25},{"time":0.4,"angle":-72.67,"curve":"stepped"},{"time":0.4333,"angle":-72.67},{"time":0.5,"angle":-20.25},{"time":0.5667,"angle":-85.29,"curve":"stepped"},{"time":1.3667,"angle":-85.29}]},"neck":{"rotate":[{"time":0,"angle":-2.83},{"time":0.1333,"angle":12.35},{"time":0.2333,"angle":29.89},{"time":0.3,"angle":70.36},{"time":0.4,"angle":-10.22,"curve":"stepped"},{"time":0.4333,"angle":-10.22},{"time":0.5,"angle":2.93},{"time":0.5667,"angle":47.95}]},"torso":{"rotate":[{"time":0,"angle":-8.62},{"time":0.1333,"angle":28.2},{"time":0.2667,"angle":-280.19},{"time":0.4,"angle":-237.23,"curve":"stepped"},{"time":0.4333,"angle":-237.23},{"time":0.5,"angle":76.03}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-38.86},{"time":0.1333,"angle":-299.59},{"time":0.2667,"angle":-244.75},{"time":0.4,"angle":-292.36},{"time":0.4333,"angle":-315.85},{"time":0.5,"angle":-347.94},{"time":0.7,"angle":-347.33}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":-44.7},{"time":0.1333,"angle":112.26},{"time":0.2667,"angle":129.08},{"time":0.4,"angle":134.94,"curve":"stepped"},{"time":0.4333,"angle":134.94},{"time":0.5667,"angle":172.6}]},"front-bracer":{"rotate":[{"time":0,"angle":21.88},{"time":0.1333,"angle":11.49},{"time":0.2667,"angle":-18.82},{"time":0.4,"angle":-18.93},{"time":0.4333,"angle":-18.28},{"time":0.5,"angle":60.62},{"time":0.7,"angle":-18.88}]},"front-fist":{"rotate":[{"time":0,"angle":-2.33},{"time":0.2667,"angle":26.35},{"time":0.7,"angle":-6.08}]},"rear-bracer":{"rotate":[{"time":0,"angle":10.36},{"time":0.1333,"angle":-23.12},{"time":0.2667,"angle":-23.12},{"time":0.4,"angle":-23.16,"curve":"stepped"},{"time":0.4333,"angle":-23.16},{"time":0.5667,"angle":-23.2}]},"gun":{"rotate":[{"time":0,"angle":-2.79},{"time":0.1333,"angle":-24.58}]},"hip":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":50.35,"y":151.73},{"time":0.4,"x":5.17,"y":-119.65,"curve":"stepped"},{"time":0.4333,"x":5.17,"y":-119.65},{"time":0.5,"x":50.35,"y":-205.19}]},"front-thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":8.47},{"time":0.2667,"angle":115.96},{"time":0.4,"angle":180.66,"curve":"stepped"},{"time":0.4333,"angle":180.66},{"time":0.5,"angle":155.22},{"time":0.6,"angle":97.74}]},"front-shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-27.37},{"time":0.2667,"angle":-35.1},{"time":0.4,"angle":-37.73,"curve":"stepped"},{"time":0.4333,"angle":-37.73},{"time":0.5,"angle":-40.07},{"time":0.6,"angle":2.76}]},"rear-thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":70.45},{"time":0.2667,"angle":155.35},{"time":0.4,"angle":214.31,"curve":"stepped"},{"time":0.4333,"angle":214.31},{"time":0.5,"angle":169.67},{"time":0.8,"angle":83.27}]},"rear-shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":18.94},{"time":0.2667,"angle":-21.04},{"time":0.4,"angle":-29.94,"curve":"stepped"},{"time":0.4333,"angle":-29.94},{"time":0.5,"angle":-16.79},{"time":0.8,"angle":7.78}]},"rear-foot":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-11.63},{"time":0.4,"angle":-45.6}]},"front-foot":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-48.75}]},"front-foot-tip":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-43.25},{"time":0.2,"angle":6.05},{"time":0.3,"angle":36.84},{"time":0.3667,"angle":74.42},{"time":0.5667,"angle":77.34},{"time":0.7,"angle":59.35}]},"back-foot-tip":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":83.04},{"time":0.3,"angle":100.03},{"time":0.3667,"angle":118.36},{"time":0.5667,"angle":115.44},{"time":0.7,"angle":88.21},{"time":0.8333,"angle":53.38}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-23.42},{"time":0.3,"angle":-16.06},{"time":0.3333,"angle":19.03},{"time":0.4333,"angle":-4.91},{"time":0.5667,"angle":1.29}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-23.42},{"time":0.3,"angle":-16.06},{"time":0.3333,"angle":19.03},{"time":0.4333,"angle":-4.91},{"time":0.5667,"angle":1.29}]}},"ik":{"front-ankle-ik":[{"time":0,"mix":0,"bendPositive":false}],"front-foot-ik":[{"time":0,"mix":0}],"rear-ankle-ik":[{"time":0,"mix":0.005,"bendPositive":false}],"rear-foot-ik":[{"time":0,"mix":0.005}]}},"hoverboard":{"slots":{"exhaust1":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"}]},"exhaust2":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"}]},"exhaust3":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"}]},"front-fist":{"attachment":[{"time":0,"name":"spineboy/front-fist-open"}]},"hoverboard-board":{"attachment":[{"time":0,"name":"spineboy/hoverboard-board"}]},"hoverboard-thruster-front":{"attachment":[{"time":0,"name":"spineboy/hoverboard-thruster"}]},"hoverboard-thruster-rear":{"attachment":[{"time":0,"name":"spineboy/hoverboard-thruster"}]},"hoverglow-front":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"}]},"hoverglow-rear":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"}]},"side-glow1":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"},{"time":1.3,"name":null},{"time":1.3333,"name":"spineboy/hoverglow-small"},{"time":2.6333,"name":null}]},"side-glow2":{"attachment":[{"time":0.1,"name":"spineboy/hoverglow-small"},{"time":1.3333,"name":null},{"time":1.4333,"name":"spineboy/hoverglow-small"},{"time":2.6667,"name":null}]},"side-glow3":{"attachment":[{"time":0,"name":"spineboy/hoverglow-small"},{"time":1.3,"name":null},{"time":1.3333,"name":"spineboy/hoverglow-small"},{"time":2.6333,"name":null}]}},"bones":{"exhaust1":{"scale":[{"time":0,"x":1.593,"y":0.964},{"time":0.3667,"x":1,"y":0.713},{"time":0.5667,"x":1.774,"y":0.883},{"time":0.9667,"x":1.181,"y":0.649},{"time":1.4,"x":1.893,"y":0.819},{"time":1.6667,"x":1.18,"y":0.686},{"time":1.9667,"x":1.903,"y":0.855},{"time":2.2667,"x":1.311,"y":0.622},{"time":2.6667,"x":1.593,"y":0.964}]},"exhaust2":{"scale":[{"time":0,"x":1.88,"y":0.832},{"time":0.2667,"x":1.311,"y":0.686},{"time":0.6333,"x":2.01,"y":0.769},{"time":0.9667,"x":1,"y":0.794},{"time":1.3333,"x":1.699,"y":0.86},{"time":1.5,"x":1.181,"y":0.713},{"time":2.0667,"x":1.881,"y":0.796},{"time":2.3667,"x":1.3,"y":0.649},{"time":2.6667,"x":1.88,"y":0.832}]},"hoverboard-thruster-front":{"rotate":[{"time":0,"angle":0},{"time":1.4,"angle":11.33},{"time":2.6667,"angle":0}]},"hoverglow-front":{"scale":[{"time":0,"x":0.849,"y":1.764},{"time":0.2,"x":0.835,"y":2.033},{"time":0.4667,"x":0.752,"y":1.735},{"time":0.6333,"x":0.809,"y":1.71},{"time":0.8,"x":0.717,"y":1.45},{"time":0.9667,"x":0.777,"y":1.45},{"time":1.0667,"x":0.725,"y":1.241},{"time":1.2667,"x":0.685,"y":1.173},{"time":1.5,"x":0.825,"y":1.572},{"time":1.6,"x":0.758,"y":1.297},{"time":1.7667,"x":0.725,"y":1.241},{"time":2.0667,"x":0.895,"y":1.857},{"time":2.2,"x":0.845,"y":1.962},{"time":2.3667,"x":0.802,"y":1.491},{"time":2.5667,"x":0.845,"y":1.31},{"time":2.6667,"x":0.849,"y":1.764}]},"hoverboard-thruster-rear":{"rotate":[{"time":0,"angle":0},{"time":1.3333,"angle":7.03},{"time":2.6667,"angle":0}]},"hoverglow-rear":{"scale":[{"time":0,"x":0.845,"y":1.31},{"time":0.2,"x":0.856,"y":1.629},{"time":0.3667,"x":0.835,"y":2.033},{"time":0.5667,"x":0.752,"y":1.735},{"time":0.8,"x":0.809,"y":1.71},{"time":0.9667,"x":0.717,"y":1.45},{"time":1.1667,"x":0.777,"y":1.45},{"time":1.3333,"x":0.725,"y":1.241},{"time":1.5,"x":0.685,"y":1.173},{"time":1.6667,"x":0.758,"y":1.297},{"time":1.9667,"x":0.725,"y":1.241},{"time":2.0667,"x":0.825,"y":1.572},{"time":2.2,"x":0.895,"y":1.857},{"time":2.3667,"x":0.845,"y":1.962},{"time":2.5667,"x":0.802,"y":1.491},{"time":2.6667,"x":0.845,"y":1.31}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-43.13,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":-29.01,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-36.82,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":-43.13}],"translate":[{"time":0,"x":-0.59,"y":-2.94,"curve":[0.25,0,0.75,1]},{"time":0.9667,"x":-1.74,"y":-6.39,"curve":[0.25,0,0.75,1]},{"time":1.6667,"x":0.72,"y":-2.88,"curve":[0.25,0,0.75,1]},{"time":2.6667,"x":-0.59,"y":-2.94}]},"front-fist":{"rotate":[{"time":0,"angle":16.07},{"time":0.7333,"angle":-26.01},{"time":2.6667,"angle":16.07}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":1.2667,"x":0.52,"y":-3.27,"curve":[0.25,0,0.75,1]},{"time":2.6667,"x":0,"y":0}],"shear":[{"time":0,"x":0,"y":19.83},{"time":1.2667,"x":15.28,"y":28.31},{"time":2.6667,"x":0,"y":19.83}]},"front-thigh":{"translate":[{"time":0,"x":-7.49,"y":8.51}]},"exhaust3":{"scale":[{"time":0,"x":1.882,"y":0.81},{"time":0.2,"x":1.731,"y":0.761},{"time":0.5667,"x":1.3,"y":0.649},{"time":0.8,"x":2.051,"y":0.984},{"time":1.0667,"x":1.311,"y":0.686},{"time":1.4,"x":1.86,"y":0.734},{"time":1.7667,"x":1,"y":0.794},{"time":2.1333,"x":1.549,"y":0.825},{"time":2.2667,"x":1.181,"y":0.713},{"time":2.6667,"x":1.731,"y":0.78}]},"side-glow1":{"rotate":[{"time":0,"angle":51.12,"curve":"stepped"},{"time":0.1,"angle":43.82,"curve":"stepped"},{"time":0.1333,"angle":40.95,"curve":"stepped"},{"time":0.2333,"angle":27.78,"curve":"stepped"},{"time":0.3,"angle":10.24,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":1.0667,"angle":-25.81,"curve":"stepped"},{"time":1.3333,"angle":51.12,"curve":"stepped"},{"time":1.4333,"angle":43.82,"curve":"stepped"},{"time":1.4667,"angle":40.95,"curve":"stepped"},{"time":1.5667,"angle":27.78,"curve":"stepped"},{"time":1.6333,"angle":10.24,"curve":"stepped"},{"time":1.7,"angle":0,"curve":"stepped"},{"time":2.4,"angle":-25.81}],"translate":[{"time":0,"x":338.28,"y":40.22,"curve":"stepped"},{"time":0.1,"x":331.2,"y":30.39,"curve":"stepped"},{"time":0.1333,"x":318.63,"y":20.59,"curve":"stepped"},{"time":0.2333,"x":302.45,"y":9.64,"curve":"stepped"},{"time":0.3,"x":276.87,"y":1.13,"curve":"stepped"},{"time":0.3667,"x":248.16,"y":0,"curve":"stepped"},{"time":0.4,"x":221.36,"y":0,"curve":"stepped"},{"time":0.5,"x":195.69,"y":0,"curve":"stepped"},{"time":0.5333,"x":171.08,"y":0,"curve":"stepped"},{"time":0.6333,"x":144.84,"y":0,"curve":"stepped"},{"time":0.6667,"x":121.22,"y":0,"curve":"stepped"},{"time":0.7667,"x":91.98,"y":0,"curve":"stepped"},{"time":0.8,"x":62.63,"y":0,"curve":"stepped"},{"time":0.9,"x":30.78,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0,"curve":"stepped"},{"time":1.0333,"x":-28.45,"y":0,"curve":"stepped"},{"time":1.0667,"x":-67.49,"y":16.82,"curve":"stepped"},{"time":1.1333,"x":-83.07,"y":24.36,"curve":"stepped"},{"time":1.2,"x":-93.81,"y":29.55,"curve":"stepped"},{"time":1.3333,"x":338.28,"y":40.22,"curve":"stepped"},{"time":1.4333,"x":331.2,"y":30.39,"curve":"stepped"},{"time":1.4667,"x":318.63,"y":20.59,"curve":"stepped"},{"time":1.5667,"x":302.45,"y":9.64,"curve":"stepped"},{"time":1.6333,"x":276.87,"y":1.13,"curve":"stepped"},{"time":1.7,"x":248.16,"y":0,"curve":"stepped"},{"time":1.7333,"x":221.36,"y":0,"curve":"stepped"},{"time":1.8333,"x":195.69,"y":0,"curve":"stepped"},{"time":1.8667,"x":171.08,"y":0,"curve":"stepped"},{"time":1.9667,"x":144.84,"y":0,"curve":"stepped"},{"time":2,"x":121.22,"y":0,"curve":"stepped"},{"time":2.1,"x":91.98,"y":0,"curve":"stepped"},{"time":2.1333,"x":62.63,"y":0,"curve":"stepped"},{"time":2.2333,"x":30.78,"y":0,"curve":"stepped"},{"time":2.2667,"x":0,"y":0,"curve":"stepped"},{"time":2.3667,"x":-28.45,"y":0,"curve":"stepped"},{"time":2.4,"x":-67.49,"y":16.82,"curve":"stepped"},{"time":2.4667,"x":-83.07,"y":24.36,"curve":"stepped"},{"time":2.5333,"x":-93.81,"y":29.55}],"scale":[{"time":0,"x":0.535,"y":1,"curve":"stepped"},{"time":0.1,"x":0.594,"y":1,"curve":"stepped"},{"time":0.1333,"x":0.844,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":1.0667,"x":0.534,"y":1,"curve":"stepped"},{"time":1.1333,"x":0.428,"y":0.801,"curve":"stepped"},{"time":1.2,"x":0.349,"y":0.654,"curve":"stepped"},{"time":1.3333,"x":0.535,"y":1,"curve":"stepped"},{"time":1.4333,"x":0.594,"y":1,"curve":"stepped"},{"time":1.4667,"x":0.844,"y":1,"curve":"stepped"},{"time":1.5667,"x":1,"y":1,"curve":"stepped"},{"time":2.4,"x":0.534,"y":1,"curve":"stepped"},{"time":2.4667,"x":0.428,"y":0.801,"curve":"stepped"},{"time":2.5333,"x":0.349,"y":0.654}]},"side-glow2":{"rotate":[{"time":0.1,"angle":51.12,"curve":"stepped"},{"time":0.1333,"angle":43.82,"curve":"stepped"},{"time":0.2333,"angle":40.95,"curve":"stepped"},{"time":0.3,"angle":27.78,"curve":"stepped"},{"time":0.3667,"angle":10.24,"curve":"stepped"},{"time":0.4,"angle":0,"curve":"stepped"},{"time":1.1333,"angle":-25.81,"curve":"stepped"},{"time":1.4333,"angle":51.12,"curve":"stepped"},{"time":1.4667,"angle":43.82,"curve":"stepped"},{"time":1.5667,"angle":40.95,"curve":"stepped"},{"time":1.6333,"angle":27.78,"curve":"stepped"},{"time":1.7,"angle":10.24,"curve":"stepped"},{"time":1.7333,"angle":0,"curve":"stepped"},{"time":2.4667,"angle":-25.81}],"translate":[{"time":0.1,"x":338.28,"y":40.22,"curve":"stepped"},{"time":0.1333,"x":331.2,"y":30.39,"curve":"stepped"},{"time":0.2333,"x":318.63,"y":20.59,"curve":"stepped"},{"time":0.3,"x":302.45,"y":9.64,"curve":"stepped"},{"time":0.3667,"x":276.87,"y":1.13,"curve":"stepped"},{"time":0.4,"x":248.16,"y":0,"curve":"stepped"},{"time":0.5,"x":221.36,"y":0,"curve":"stepped"},{"time":0.5333,"x":195.69,"y":0,"curve":"stepped"},{"time":0.6333,"x":171.08,"y":0,"curve":"stepped"},{"time":0.6667,"x":144.84,"y":0,"curve":"stepped"},{"time":0.7667,"x":121.22,"y":0,"curve":"stepped"},{"time":0.8,"x":91.98,"y":0,"curve":"stepped"},{"time":0.9,"x":62.63,"y":0,"curve":"stepped"},{"time":0.9333,"x":30.78,"y":0,"curve":"stepped"},{"time":1.0333,"x":0,"y":0,"curve":"stepped"},{"time":1.0667,"x":-28.45,"y":0,"curve":"stepped"},{"time":1.1333,"x":-67.49,"y":16.82,"curve":"stepped"},{"time":1.2,"x":-83.07,"y":24.36,"curve":"stepped"},{"time":1.3,"x":-93.81,"y":29.55,"curve":"stepped"},{"time":1.4333,"x":338.28,"y":40.22,"curve":"stepped"},{"time":1.4667,"x":331.2,"y":30.39,"curve":"stepped"},{"time":1.5667,"x":318.63,"y":20.59,"curve":"stepped"},{"time":1.6333,"x":302.45,"y":9.64,"curve":"stepped"},{"time":1.7,"x":276.87,"y":1.13,"curve":"stepped"},{"time":1.7333,"x":248.16,"y":0,"curve":"stepped"},{"time":1.8333,"x":221.36,"y":0,"curve":"stepped"},{"time":1.8667,"x":195.69,"y":0,"curve":"stepped"},{"time":1.9667,"x":171.08,"y":0,"curve":"stepped"},{"time":2,"x":144.84,"y":0,"curve":"stepped"},{"time":2.1,"x":121.22,"y":0,"curve":"stepped"},{"time":2.1333,"x":91.98,"y":0,"curve":"stepped"},{"time":2.2333,"x":62.63,"y":0,"curve":"stepped"},{"time":2.2667,"x":30.78,"y":0,"curve":"stepped"},{"time":2.3667,"x":0,"y":0,"curve":"stepped"},{"time":2.4,"x":-28.45,"y":0,"curve":"stepped"},{"time":2.4667,"x":-67.49,"y":16.82,"curve":"stepped"},{"time":2.5333,"x":-83.07,"y":24.36,"curve":"stepped"},{"time":2.6333,"x":-93.81,"y":29.55}],"scale":[{"time":0.1,"x":0.535,"y":1,"curve":"stepped"},{"time":0.1333,"x":0.594,"y":1,"curve":"stepped"},{"time":0.2333,"x":0.844,"y":1,"curve":"stepped"},{"time":0.3,"x":1,"y":1,"curve":"stepped"},{"time":1.1333,"x":0.534,"y":1,"curve":"stepped"},{"time":1.2,"x":0.428,"y":0.801,"curve":"stepped"},{"time":1.3,"x":0.349,"y":0.654,"curve":"stepped"},{"time":1.4333,"x":0.535,"y":1,"curve":"stepped"},{"time":1.4667,"x":0.594,"y":1,"curve":"stepped"},{"time":1.5667,"x":0.844,"y":1,"curve":"stepped"},{"time":1.6333,"x":1,"y":1,"curve":"stepped"},{"time":2.4667,"x":0.534,"y":1,"curve":"stepped"},{"time":2.5333,"x":0.428,"y":0.801,"curve":"stepped"},{"time":2.6333,"x":0.349,"y":0.654}]},"torso":{"rotate":[{"time":0,"angle":-34.73,"curve":[0.438,0,0.75,1]},{"time":1.3333,"angle":-28.86,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":-34.73}]},"neck":{"rotate":[{"time":0,"angle":10.2},{"time":0.7333,"angle":16.14},{"time":1.3333,"angle":5.83},{"time":1.6667,"angle":2.68},{"time":2.6667,"angle":10.2}]},"head":{"rotate":[{"time":0,"angle":10.2,"curve":[0.256,0,0.62,0.47]},{"time":1.3333,"angle":5.83,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":5.52,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":10.2}],"translate":[{"time":0,"x":0,"y":0},{"time":0.7333,"x":-4.22,"y":-3.62},{"time":1.6667,"x":0.84,"y":6.01},{"time":2.6667,"x":0,"y":0}]},"front-bracer":{"rotate":[{"time":0,"angle":-11.18,"curve":[0.25,0,0.75,1]},{"time":1.3333,"angle":-6.91,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":6.91,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":-11.18}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":31.65,"curve":[0.25,0,0.75,1]},{"time":1.7667,"angle":20.85,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":31.65}]},"rear-bracer":{"rotate":[{"time":0,"angle":31},{"time":0.8667,"angle":28.89},{"time":1.7667,"angle":14.83},{"time":2.6667,"angle":31}]},"gun":{"rotate":[{"time":0,"angle":1.95},{"time":1.1667,"angle":12.79},{"time":1.7667,"angle":15.87},{"time":2.6667,"angle":1.95}]},"hip":{"translate":[{"time":0,"x":-53.49,"y":32.14,"curve":"stepped"},{"time":2.6667,"x":-53.49,"y":32.14}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":1.1,"angle":11.58},{"time":2.4667,"angle":-2.89},{"time":2.6667,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":1.1,"angle":11.58},{"time":2.4667,"angle":-2.89},{"time":2.6667,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":1.1,"angle":11.58},{"time":2.4667,"angle":-2.89},{"time":2.6667,"angle":0}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":1.1,"angle":11.58},{"time":2.4667,"angle":-2.89},{"time":2.6667,"angle":0}]},"board":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.9667,"angle":13.56,"curve":[0.25,0,0.75,1]},{"time":2.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}},"transform":{"front-foot-board":[{"time":0}],"rear-foot-board":[{"time":0}],"toes-board":[{"time":0,"translateMix":0,"scaleMix":0,"shearMix":0}]},"deform":{"default":{"eye":{"spineboy/eye-indifferent":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.7333,"vertices":[0.22339,-6.575,0.22339,-6.575,0.22339,-6.575,0.22339,-6.575],"curve":[0.25,0,0.75,1]},{"time":2.6667}]},"front-foot":{"spineboy/front-foot":[{"time":0,"offset":28,"vertices":[3.8188,-3.7757,-0.02832,-5.37024,3.8188,-3.7757,-0.02832,-5.37024,3.8188,-3.7757,-0.02832,-5.37024,-3.82159,3.77847,0.02843,5.374]}]},"front-shin":{"spineboy/front-shin":[{"time":0,"offset":14,"vertices":[0.5298,-1.12677,-0.85507,-4.20587,-11.35158,-10.19225,-10.79865,-8.43765,-6.06447,-6.89757,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.54892,-3.06021,1.48463,-2.29663,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4.80437,-7.01817]},{"time":0.9667,"offset":14,"vertices":[0.5298,-1.12677,-11.66571,-9.07211,-25.65866,-17.53735,-25.53217,-16.50978,-11.78232,-11.26097,0,0,0.60487,-1.63589,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.60487,-1.63589,0,0,-2.64522,-7.35739,1.48463,-2.29663,0,0,0,0,0,0,0.60487,-1.63589,0.60487,-1.63589,0.60487,-1.63589,0.60487,-1.63589,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.60487,-1.63589,0,0,-10.06873,-12.0999]},{"time":1.4,"offset":14,"vertices":[0.5298,-1.12677,-0.85507,-4.20587,-7.00775,-8.24771,-6.45482,-6.49312,-6.06447,-6.89757,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.54892,-3.06021,1.48463,-2.29663,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4.80437,-7.01817]},{"time":2.6667,"offset":14,"vertices":[0.5298,-1.12677,-0.85507,-4.20587,-11.35158,-10.19225,-10.79865,-8.43765,-6.06447,-6.89757,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.54892,-3.06021,1.48463,-2.29663,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4.80437,-7.01817]}]},"goggles":{"spineboy/goggles":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.7333,"vertices":[0.67711,-3.13914,0.27417,-1.27147,0.15489,-0.72019,0,0,0,0,0,0,0,0,0,0,0.42483,-1.97125,1.55292,-7.20752,0.1845,-0.85692,0.62342,-2.89004,0.80454,-3.72999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.01049,-4.68358,1.14495,-5.30811,1.05917,-4.91033,0.7856,-3.6421,0.88443,-4.1001,0.91542,-4.24387,0.80144,-3.7155,0.7665,-3.55506,0.29612,-1.37293,0.03147,-0.14642,0.22645,-1.05166,0.13694,-0.63699,0.25405,-1.17808,0.55052,-2.5523,0.77677,-3.60118,1.59353,-7.39157,1.35063,-6.26342,1.34974,-6.25925,0.94851,-4.39735,0.83697,-3.88036,0.80624,-3.73668,1.01196,-4.69016,0,0,0.1845,-0.85692,0.1845,-0.85692,0.1845,-0.85692,0.1845,-0.85692,0.1845,-0.85692,0.1845,-0.85692],"curve":[0.25,0,0.75,1]},{"time":2.6667}]},"head":{"spineboy/head":[{"time":0,"offset":60,"vertices":[2.77362,1.62589,1.93787,2.56528],"curve":[0.25,0,0.75,1]},{"time":0.7333,"offset":34,"vertices":[1.96774,-9.13288,1.96774,-9.13288,1.96774,-9.13288,0.52141,-2.41945,0,0,0,0,0,0,0,0,-0.28486,1.32153,-0.28486,1.32153,0,0,0,0,0,0,1.04011,0.60971,0.7267,0.96198,7.3906,-5.46259,3.91425,8.31534,2.51528,-2.75824,2.21405,3.0056,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6.35114,5.70461,6.83772,-5.11176,3.67865,7.70451,5.75797,-8.66576,0,0,0,0,0,0,0,0,0,0,0.08572,-3.70304,1.49945,-3.38693,0.21432,-9.25756,0,0,0,0,0.08572,-3.70304,0.21432,-9.25756,0,0,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0.10735,-0.51047,0,0,0,0,0,0,0,0,0.34761,-1.61296,0.26072,-1.20974,0.65176,-3.02431],"curve":[0.25,0,0.75,1]},{"time":2.6667,"offset":60,"vertices":[2.77362,1.62589,1.93787,2.56528]}]},"hoverboard-board":{"spineboy/hoverboard-board":[{"time":0},{"time":0.7333,"offset":1,"vertices":[2.45856,0,0,0,0,0,0,0,0,3.55673,-3.0E-4,3.55673,-3.0E-4,0,0,0,0,0,0,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,-7.6E-4,-9.84158,0,0,0,0,0,0,0,0,-4.90558,0.11214,-9.40706,6.2E-4,-6.34871,4.3E-4,-6.34925,-6.57018,-6.34925,-6.57018,-6.34871,4.3E-4,-2.3308,1.7E-4,-2.33133,-6.57045,-2.33133,-6.57045,-2.3308,1.7E-4,0,0,1.2E-4,2.45856,1.2E-4,2.45856,1.2E-4,2.45856,1.2E-4,2.45856,3.3297,4.44005,3.3297,4.44005,3.3297,4.44005,1.2E-4,2.45856,0,0,0,0,0,0,0,0,0,0,-2.46227,1.7E-4,-2.46227,1.7E-4,-2.52316,1.1313,-2.52316,1.1313,-2.52316,1.1313,1.2E-4,2.45856,1.2E-4,2.45856,-9.40694,2.45918,1.88063,0.44197,-2.9E-4,-3.54808,0,0,0,0,0,0,0,0,0,0,-2.52316,1.1313,-2.52316,1.1313,-2.52316,1.1313,-2.46227,1.7E-4,-2.46227,1.7E-4,-2.46227,1.7E-4,0,0,0,0,1.2E-4,2.45856]},{"time":2.6667}]},"mouth":{"spineboy/mouth-smile":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":0.7333,"vertices":[0.15454,-6.6912,0.15454,-6.6912,0.15454,-6.6912,0.15454,-6.6912],"curve":[0.25,0,0.75,1]},{"time":2.6667}]},"rear-foot":{"spineboy/rear-foot":[{"time":0,"offset":28,"vertices":[-1.93078,1.34782,-0.31417,2.33363,3.05122,0.33946,2.31472,-2.01678,2.17583,-2.05795,-0.04277,-2.99459,1.15429,0.26328,0.97501,-0.67169]}]},"torso":{"spineboy/torso":[{"time":0},{"time":0.7333,"offset":14,"vertices":[4.46481,-0.3543,4.46481,-0.35429,4.46481,-0.3543,4.46481,-0.3543,4.46481,-0.35429,4.46481,-0.3543,4.46481,-0.35429,4.46481,-0.3543,4.46481,-0.35429,0,0,-0.59544,-7.5094,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,-0.5954,-7.50941,-0.5954,-7.50941,-0.59544,-7.5094,-0.5954,-7.50941,-0.5954,-7.50941,3.86934,-7.86369,3.86935,-7.86369,3.86934,-7.86369,3.86935,-7.86369,-0.5954,-7.50941,-0.5954,-7.50941,-0.59544,-7.5094,-0.5954,-7.50941,-0.5954,-7.50941,-0.59544,-7.5094,-0.5954,-7.50941,-0.5954,-7.50941,-0.59544,-7.5094,-0.5954,-7.50941,-0.5954,-7.50941,-0.5954,-7.50941,0,0,3.0E-5,-1.0E-5,0.35948,-1.81172,0.35962,-1.81179,0,0,0,0,-0.13699,-6.00874,-0.13678,-6.00883,-0.13666,-6.0088,2.46227,-6.26817,2.46274,-6.26834,2.27113,-5.86305,2.27148,-5.86322,2.27164,-5.86306,0.52808,-3.21825]},{"time":1.3333},{"time":1.6667,"offset":4,"vertices":[3.41785,-0.27124,3.41788,-0.27125,3.41785,-0.27124,3.41785,-0.27124,3.41788,-0.27125,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4682,5.90338,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,3.88608,5.63213,3.88608,5.63213,0.4682,5.90338,0.46823,5.90337,0.46823,5.90337,0,0,0,0,0.4682,5.90338,0.46823,5.90337,0.46823,5.90337,0.46823,5.90337,0.4682,5.90338,0.46823,5.90337,0.46823,5.90337,0.4682,5.90338,0.46823,5.90337,0.46823,5.90337,0.4682,5.90338,0.46823,5.90337,0.46823,5.90337,0.46823,5.90337,0,0,3.0E-5,-1.0E-5,0,0,0,0,0,0,0,0,-0.5545,7.37884,-0.5545,7.37883,-0.5545,7.37883,-0.26132,7.75283,-0.26138,7.75283,-0.76694,6.33778,-0.76703,6.33779,-0.76697,6.33778]},{"time":2.6667}]}}}},"idle":{"slots":{"front-fist":{"attachment":[{"time":0,"name":"spineboy/front-fist-open"}]}},"bones":{"front-foot-ik":{"translate":[{"time":0,"x":-69.06,"y":0}]},"hip":{"translate":[{"time":0,"x":-7.16,"y":-23.15,"curve":[0.205,0,0.75,1]},{"time":0.6667,"x":-5.33,"y":-35.48,"curve":[0.591,0,0.642,1]},{"time":1.6667,"x":-7.16,"y":-23.15}]},"rear-foot-ik":{"translate":[{"time":0,"x":48.87,"y":0}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-70.59},{"time":0.8,"angle":-80.61},{"time":1.6667,"angle":-70.59}]},"front-bracer":{"rotate":[{"time":0,"angle":42.09}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":39.2},{"time":0.6667,"angle":29.37},{"time":1.6667,"angle":39.2}]},"head":{"rotate":[{"time":0,"angle":-8.95,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-4.12,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":-8.95}]},"front-fist":{"rotate":[{"time":0,"angle":0},{"time":0.8,"angle":2.04},{"time":1.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.8,"x":0.94,"y":1},{"time":1.6667,"x":1,"y":1}]},"rear-bracer":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":16.09},{"time":1.6667,"angle":0}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":0.45},{"time":1.6667,"angle":0}]},"torso":{"rotate":[{"time":0,"angle":-8.85},{"time":0.6667,"angle":-13.61},{"time":1.6667,"angle":-8.85}]},"neck":{"rotate":[{"time":0,"angle":3.78,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":5.45,"curve":[0.25,0,0.75,1]},{"time":1.6667,"angle":3.78}]}}},"jump":{"slots":{"front-fist":{"attachment":[{"time":0,"name":"spineboy/front-fist-open"},{"time":0.2,"name":"spineboy/front-fist-closed"},{"time":0.7407,"name":"spineboy/front-fist-open"}]},"mouth":{"attachment":[{"time":0,"name":"spineboy/mouth-grind"}]}},"bones":{"front-thigh":{"rotate":[{"time":0,"angle":91.53,"curve":[0.278,0.46,0.764,1]},{"time":0.2,"angle":-35.84,"curve":[0.761,0,0.75,1]},{"time":0.6285,"angle":127.74},{"time":0.7968,"angle":48.18,"curve":[0.227,0.27,0.433,1]},{"time":0.9651,"angle":45.38},{"time":1.1333,"angle":25.35},{"time":1.3333,"angle":91.53}],"translate":[{"time":0,"x":-2.57,"y":5.78},{"time":0.6285,"x":8.3,"y":7.99},{"time":0.7968,"x":7.21,"y":-4},{"time":1.3333,"x":-2.57,"y":5.78}]},"torso":{"rotate":[{"time":0,"angle":-42.64},{"time":0.2,"angle":-5.74},{"time":0.6285,"angle":-50.76},{"time":0.7968,"angle":1.9},{"time":0.8809,"angle":11.59},{"time":0.9931,"angle":-1.9},{"time":1.1333,"angle":11.59},{"time":1.3333,"angle":-42.64}]},"rear-thigh":{"rotate":[{"time":0,"angle":-26.32},{"time":0.2,"angle":121.44},{"time":0.6285,"angle":70.55},{"time":0.7968,"angle":79.9,"curve":[0.296,0.3,0.59,1]},{"time":0.9651,"angle":74.06},{"time":1.1333,"angle":99.12},{"time":1.3333,"angle":-26.32}],"translate":[{"time":0,"x":-0.56,"y":-0.32},{"time":0.6285,"x":-8.5,"y":10.58},{"time":0.7968,"x":-1.96,"y":-0.32},{"time":1.3333,"x":-0.56,"y":-0.32}]},"rear-shin":{"rotate":[{"time":0,"angle":-78.69},{"time":0.6285,"angle":-55.56},{"time":0.7968,"angle":-62.84},{"time":0.9651,"angle":-41.13},{"time":1.1333,"angle":-80.75},{"time":1.3333,"angle":-78.69}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-22.62},{"time":0.2,"angle":-246.69},{"time":0.6846,"angle":11.28,"curve":[0.246,0,0.633,0.54]},{"time":0.7968,"angle":-57.46,"curve":[0.38,0.53,0.745,1]},{"time":0.909,"angle":-112.6},{"time":1.0492,"angle":-108.61},{"time":1.1333,"angle":-112.6},{"time":1.3333,"angle":-22.62}],"translate":[{"time":0,"x":6.08,"y":7.15},{"time":0.2,"x":7.23,"y":-13.13,"curve":"stepped"},{"time":0.7968,"x":7.23,"y":-13.13},{"time":1.3333,"x":6.08,"y":7.15}]},"front-bracer":{"rotate":[{"time":0,"angle":66.47},{"time":0.2,"angle":42.4},{"time":0.6285,"angle":26.06},{"time":0.7968,"angle":13.28},{"time":0.909,"angle":-28.65},{"time":0.9651,"angle":-22.31},{"time":1.0492,"angle":-35.39},{"time":1.1333,"angle":-28.65},{"time":1.3333,"angle":66.47}]},"front-fist":{"rotate":[{"time":0,"angle":-28.43},{"time":0.6285,"angle":-45.61},{"time":0.7968,"angle":-53.66},{"time":0.909,"angle":7.56},{"time":1.0492,"angle":-32.59},{"time":1.1333,"angle":7.56},{"time":1.3333,"angle":-28.43}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":39.69},{"time":0.2,"angle":276.58},{"time":0.3,"angle":17.74},{"time":0.6285,"angle":83.38},{"time":0.8529,"angle":33.71,"curve":[0.359,0.64,0.577,0.77]},{"time":1.1333,"angle":34.56},{"time":1.3333,"angle":39.69}],"translate":[{"time":0,"x":-3.1,"y":-4.87},{"time":0.2,"x":23.33,"y":49.07},{"time":0.6285,"x":20.78,"y":40.21},{"time":1.3333,"x":-3.1,"y":-4.87}]},"rear-bracer":{"rotate":[{"time":0,"angle":29.67},{"time":0.2,"angle":45.07},{"time":0.6285,"angle":-4.35},{"time":0.8248,"angle":61.69},{"time":0.8529,"angle":82.6},{"time":0.909,"angle":80.06},{"time":1.0492,"angle":57.56},{"time":1.1333,"angle":80.06},{"time":1.3333,"angle":29.67}]},"neck":{"rotate":[{"time":0,"angle":24.91},{"time":0.2,"angle":16.32},{"time":0.6285,"angle":7.45},{"time":0.7968,"angle":-20.35},{"time":0.8809,"angle":-0.69,"curve":"stepped"},{"time":1.1333,"angle":-0.69},{"time":1.3333,"angle":24.91}]},"head":{"rotate":[{"time":0,"angle":24.92},{"time":0.2,"angle":10.36},{"time":0.6285,"angle":28.65},{"time":0.7968,"angle":-2.66},{"time":0.8809,"angle":-28.94,"curve":"stepped"},{"time":1.1333,"angle":-28.94},{"time":1.3333,"angle":24.92}]},"hip":{"translate":[{"time":0,"x":-34.52,"y":-78.63,"curve":[0.233,1.01,0.75,1]},{"time":0.2,"x":-34.52,"y":182.51,"curve":[0.232,0.48,0.599,0.79]},{"time":0.5333,"x":-35.47,"y":404.79,"curve":[0.33,0.17,0.661,0.22]},{"time":1.1333,"x":-34.52,"y":2.5},{"time":1.3333,"x":-34.52,"y":-78.63}]},"front-shin":{"rotate":[{"time":0,"angle":-90.63,"curve":[0.416,0.55,0.743,1]},{"time":0.2,"angle":-10.52,"curve":[0.644,0.01,0.75,1]},{"time":0.6285,"angle":-127.72},{"time":0.7968,"angle":-19.92},{"time":0.9651,"angle":-35.06},{"time":1.1333,"angle":-5.17},{"time":1.3333,"angle":-90.63}]},"front-foot":{"rotate":[{"time":0,"angle":-0.8},{"time":0.0333,"angle":16.28},{"time":0.0667,"angle":23.52},{"time":0.1,"angle":21.02},{"time":0.1333,"angle":10.93},{"time":0.2,"angle":-38.46},{"time":0.6285,"angle":6.62},{"time":0.7968,"angle":-11.52},{"time":1.0492,"angle":-22.92},{"time":1.3333,"angle":-0.8}]},"rear-foot":{"rotate":[{"time":0,"angle":-12.78},{"time":0.2,"angle":17.06},{"time":0.6285,"angle":19.45},{"time":0.7968,"angle":2.67},{"time":1.0492,"angle":-28.5},{"time":1.3333,"angle":-12.78}]},"gun":{"rotate":[{"time":0,"angle":6.18},{"time":0.2,"angle":30.81},{"time":0.6285,"angle":13.26},{"time":0.7968,"angle":14.98},{"time":0.8248,"angle":25.65},{"time":0.8529,"angle":20.62},{"time":1.0492,"angle":8.6},{"time":1.3333,"angle":6.18}]},"back-foot-tip":{"rotate":[{"time":0,"angle":-134.56},{"time":0.0667,"angle":-53.37},{"time":0.1667,"angle":44.6},{"time":0.6285,"angle":20.16},{"time":0.7968,"angle":27.1},{"time":0.9931,"angle":22.88},{"time":1.2667,"angle":-35.32},{"time":1.3333,"angle":-134.56}]},"front-foot-tip":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-52.5},{"time":0.6285,"angle":-15.64},{"time":0.7968,"angle":25.35},{"time":0.9931,"angle":-21.32},{"time":1.1333,"angle":-10.35},{"time":1.2,"angle":0.81}]},"hair3":{"rotate":[{"time":0,"angle":22.53},{"time":0.0667,"angle":11.66},{"time":0.2,"angle":-6.59},{"time":0.7407,"angle":9.32},{"time":1.3333,"angle":22.53}]},"hair4":{"rotate":[{"time":0,"angle":-6.07},{"time":0.0667,"angle":11.67},{"time":0.2,"angle":-6.57},{"time":0.3333,"angle":10.17},{"time":0.7407,"angle":14.76},{"time":0.909,"angle":-33.44},{"time":1.1667,"angle":-19.29},{"time":1.3333,"angle":-6.07}]},"hair2":{"rotate":[{"time":0,"angle":2.7},{"time":0.0667,"angle":11.67},{"time":0.2,"angle":-6.57},{"time":0.3333,"angle":18.94},{"time":0.7407,"angle":23.53},{"time":0.909,"angle":-24.67},{"time":1.1667,"angle":-10.51},{"time":1.3333,"angle":2.7}]},"hair1":{"rotate":[{"time":0,"angle":22.54},{"time":0.0667,"angle":11.67},{"time":0.2,"angle":-6.57},{"time":0.7407,"angle":9.33},{"time":1.3333,"angle":22.54}]}},"ik":{"front-ankle-ik":[{"time":0,"mix":0,"bendPositive":false}],"front-foot-ik":[{"time":0,"mix":0}],"rear-ankle-ik":[{"time":0,"mix":0,"bendPositive":false}],"rear-foot-ik":[{"time":0,"mix":0}]},"events":[{"time":1.1333,"name":"footstep"}]},"portal":{"slots":{"clipping":{"attachment":[{"time":0,"name":"clipping"}]},"front-fist":{"attachment":[{"time":0,"name":"spineboy/front-fist-open"}]},"portal-bg":{"attachment":[{"time":0,"name":"spineboy/portal-bg"},{"time":3.1,"name":null}]},"portal-flare1":{"attachment":[{"time":1.1,"name":"spineboy/portal-flare1"},{"time":1.1333,"name":"spineboy/portal-flare2"},{"time":1.1667,"name":"spineboy/portal-flare3"},{"time":1.2,"name":"spineboy/portal-flare1"},{"time":1.2333,"name":"spineboy/portal-flare2"},{"time":1.2667,"name":"spineboy/portal-flare1"},{"time":1.3333,"name":null}]},"portal-flare2":{"attachment":[{"time":1.1,"name":"spineboy/portal-flare2"},{"time":1.1333,"name":"spineboy/portal-flare3"},{"time":1.1667,"name":"spineboy/portal-flare1"},{"time":1.2,"name":"spineboy/portal-flare2"},{"time":1.2333,"name":"spineboy/portal-flare3"},{"time":1.2667,"name":null}]},"portal-flare3":{"attachment":[{"time":1.2,"name":"spineboy/portal-flare3"},{"time":1.2333,"name":"spineboy/portal-flare2"},{"time":1.2667,"name":null}]},"portal-flare4":{"attachment":[{"time":1.2,"name":"spineboy/portal-flare2"},{"time":1.2333,"name":"spineboy/portal-flare1"},{"time":1.2667,"name":"spineboy/portal-flare2"},{"time":1.3333,"name":null}]},"portal-flare5":{"attachment":[{"time":1.2333,"name":"spineboy/portal-flare3"},{"time":1.2667,"name":"spineboy/portal-flare1"},{"time":1.3333,"name":null}]},"portal-flare6":{"attachment":[{"time":1.2667,"name":"spineboy/portal-flare3"},{"time":1.3333,"name":null}]},"portal-flare7":{"attachment":[{"time":1.1333,"name":"spineboy/portal-flare2"},{"time":1.1667,"name":null}]},"portal-flare8":{"attachment":[{"time":1.2,"name":"spineboy/portal-flare3"},{"time":1.2333,"name":"spineboy/portal-flare2"},{"time":1.2667,"name":null}]},"portal-flare9":{"attachment":[{"time":1.2,"name":"spineboy/portal-flare2"},{"time":1.2333,"name":"spineboy/portal-flare3"},{"time":1.2667,"name":"spineboy/portal-flare1"},{"time":1.3,"name":null}]},"portal-flare10":{"attachment":[{"time":1.2,"name":"spineboy/portal-flare2"},{"time":1.2333,"name":"spineboy/portal-flare1"},{"time":1.2667,"name":"spineboy/portal-flare3"},{"time":1.3,"name":null}]},"portal-shade":{"attachment":[{"time":0,"name":"spineboy/portal-shade"},{"time":3.1,"name":null}]},"portal-streaks1":{"attachment":[{"time":0,"name":"spineboy/portal-streaks1"},{"time":3.1,"name":null}]},"portsl-streaks2":{"attachment":[{"time":0,"name":"spineboy/portsl-streaks2"},{"time":3.1,"name":null}]}},"bones":{"portal-root":{"translate":[{"time":0,"x":-458.35,"y":105.19,"curve":[0.934,0.07,0.671,0.99]},{"time":1,"x":-448.03,"y":105.19},{"time":2.5,"x":-431.97,"y":105.19,"curve":[0.426,0,0.747,0.41]},{"time":3.1,"x":-457.42,"y":105.19}],"scale":[{"time":0,"x":0.003,"y":0.006,"curve":[0.823,0.24,0.867,0.66]},{"time":0.4,"x":0.175,"y":0.387,"curve":[0.727,1.8,0.671,0.99]},{"time":1,"x":0.645,"y":1.426},{"time":1.2333,"x":0.685,"y":1.516},{"time":1.6,"x":0.634,"y":1.401},{"time":1.9667,"x":0.67,"y":1.481},{"time":2.2,"x":0.688,"y":1.522},{"time":2.5,"x":0.645,"y":1.426,"curve":[0.98,-0.26,0.717,1]},{"time":3.1,"x":0.007,"y":0.015}]},"portal-streaks1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":120},{"time":0.6667,"angle":-120},{"time":1,"angle":0},{"time":1.3333,"angle":120},{"time":1.6667,"angle":-120},{"time":2,"angle":0},{"time":2.3333,"angle":120},{"time":2.6667,"angle":-120},{"time":3,"angle":0},{"time":3.3333,"angle":120}],"translate":[{"time":0,"x":15.15,"y":0,"curve":[0.243,0,0.649,0.6]},{"time":0.6667,"x":10.9,"y":-6.44,"curve":[0.382,0.57,0.735,1]},{"time":1,"x":9.21,"y":-8.66},{"time":1.3333,"x":21.53,"y":-3.19},{"time":2,"x":9.21,"y":6.26},{"time":2.5667,"x":9.21,"y":-0.8},{"time":2.9333,"x":9.21,"y":-8.91}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":1.053,"y":1.053,"curve":[0.25,0,0.75,1]},{"time":1.3333,"x":0.986,"y":0.986,"curve":[0.25,0,0.75,1]},{"time":2,"x":1.053,"y":1.053}]},"portal-streaks2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":120},{"time":1.3333,"angle":-120},{"time":2,"angle":0},{"time":2.6667,"angle":120},{"time":3.3333,"angle":-120}],"translate":[{"time":0,"x":-2.11,"y":0},{"time":1,"x":-2.11,"y":6.63},{"time":1.9333,"x":-2.11,"y":0}],"scale":[{"time":0,"x":1.014,"y":1.014}]},"portal-shade":{"translate":[{"time":0,"x":-29.68,"y":0}],"scale":[{"time":0,"x":0.714,"y":0.714}]},"portal":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":120},{"time":1.3333,"angle":-120},{"time":2,"angle":0},{"time":2.6667,"angle":120},{"time":3.3333,"angle":-120}]},"clipping":{"translate":[{"time":0,"x":-476.55,"y":2.27}],"scale":[{"time":0,"x":0.983,"y":1.197}]},"hip":{"rotate":[{"time":1.0667,"angle":22.74}],"translate":[{"time":0,"x":-899.41,"y":4.47,"curve":"stepped"},{"time":1.0667,"x":-694.16,"y":183.28},{"time":1.1333,"x":-509.15,"y":83.28},{"time":1.2333,"x":-316.97,"y":37.07},{"time":1.4,"x":-160.9,"y":-90.39},{"time":1.6,"x":-102.86,"y":-94.33,"curve":[0.596,0.01,0.75,1]},{"time":2.1333,"x":-7.2,"y":-31.12,"curve":[0.205,0,0.75,1]},{"time":2.6,"x":-5.34,"y":-36.81,"curve":[0.591,0,0.642,1]},{"time":3.6,"x":-7.16,"y":-24.48}]},"rear-foot-ik":{"rotate":[{"time":1.0667,"angle":41.6,"curve":"stepped"},{"time":1.2333,"angle":41.6},{"time":1.3333,"angle":20.8},{"time":1.4,"angle":19.02},{"time":1.4333,"angle":-0.28}],"translate":[{"time":0,"x":-899.41,"y":4.47,"curve":"stepped"},{"time":1.0667,"x":-591.13,"y":438.46},{"time":1.1333,"x":-406.12,"y":338.47},{"time":1.2333,"x":-214.35,"y":255.24},{"time":1.4,"x":-8.88,"y":15.25},{"time":1.4333,"x":8.36,"y":0.2,"curve":[0.216,0.54,0.75,1]},{"time":1.9333,"x":48.87,"y":0}]},"front-foot-ik":{"rotate":[{"time":1.0667,"angle":32.08,"curve":"stepped"},{"time":1.2333,"angle":32.08},{"time":1.3333,"angle":-0.28},{"time":1.6,"angle":-34.77},{"time":1.9333,"angle":-2.15}],"translate":[{"time":0,"x":-899.41,"y":4.47,"curve":"stepped"},{"time":1.0667,"x":-533.93,"y":363.75},{"time":1.1333,"x":-348.92,"y":263.76},{"time":1.2333,"x":-201.23,"y":199.93},{"time":1.3333,"x":-109.57,"y":0.2,"curve":[0.255,0.48,0.75,1]},{"time":1.7333,"x":-69.06,"y":0}]},"torso":{"rotate":[{"time":1.0667,"angle":9.73,"curve":"stepped"},{"time":1.2333,"angle":9.73},{"time":1.3333,"angle":2.88},{"time":1.4667,"angle":-73.99},{"time":1.6,"angle":-75.07,"curve":[0.392,0.03,0.719,0.43]},{"time":1.7333,"angle":-77.34,"curve":[0.456,0.36,0.68,1.21]},{"time":2.3333,"angle":-32.03},{"time":2.6,"angle":-36.79},{"time":3.6,"angle":-32.03}]},"neck":{"rotate":[{"time":1.0667,"angle":-3.57,"curve":"stepped"},{"time":1.1333,"angle":-3.57},{"time":1.2333,"angle":-13.5},{"time":1.3333,"angle":-1.7},{"time":1.4333,"angle":2.3},{"time":1.5667,"angle":11.42},{"time":1.9333,"angle":3.78,"curve":[0.269,0,0.618,0.42]},{"time":2.1333,"angle":7.93,"curve":[0.345,0.37,0.757,1]},{"time":2.6,"angle":5.45,"curve":[0.25,0,0.75,1]},{"time":3.6,"angle":3.78}]},"head":{"rotate":[{"time":1.0667,"angle":16.4,"curve":"stepped"},{"time":1.1333,"angle":16.4},{"time":1.2333,"angle":15.19},{"time":1.3333,"angle":-32.21},{"time":1.4333,"angle":15.95},{"time":1.5667,"angle":20.28},{"time":1.7333,"angle":15.24},{"time":1.9333,"angle":-18.95,"curve":[0.269,0,0.618,0.42]},{"time":2.1333,"angle":2.65,"curve":[0.345,0.37,0.757,1]},{"time":2.6,"angle":-4.12,"curve":[0.25,0,0.75,1]},{"time":3.6,"angle":-8.95}]},"rear-upper-arm":{"rotate":[{"time":1.0667,"angle":330.49,"curve":"stepped"},{"time":1.1333,"angle":330.49},{"time":1.2333,"angle":21.94},{"time":1.4,"angle":8.14},{"time":1.8,"angle":-3.47,"curve":[0.673,0.01,0.747,0.98]},{"time":2,"angle":39.2},{"time":2.8333,"angle":31.41,"curve":[0.322,0.17,0.655,0.5]},{"time":3.6,"angle":39.2}]},"back-foot-tip":{"rotate":[{"time":1.0667,"angle":56.07,"curve":"stepped"},{"time":1.1333,"angle":56.07},{"time":1.2333,"angle":24.68},{"time":1.3667,"angle":30.41},{"time":1.4333,"angle":19.18},{"time":1.5,"angle":-0.84}]},"front-upper-arm":{"rotate":[{"time":1.0667,"angle":-239.74,"curve":"stepped"},{"time":1.1333,"angle":-239.74},{"time":1.2333,"angle":-287.2},{"time":1.3333,"angle":-28.87},{"time":1.4667,"angle":-92.44},{"time":1.9333,"angle":-80.61},{"time":3.6,"angle":-70.59}]},"front-bracer":{"rotate":[{"time":1.0667,"angle":0.66,"curve":"stepped"},{"time":1.2333,"angle":0.66},{"time":1.3333,"angle":36.83},{"time":1.4333,"angle":12},{"time":1.5,"angle":-10.19},{"time":1.5667,"angle":-8},{"time":1.9333,"angle":42.09}]},"front-thigh":{"translate":[{"time":1.1,"x":-6.41,"y":18.23,"curve":"stepped"},{"time":1.1333,"x":-6.41,"y":18.23},{"time":1.2,"x":1.61,"y":3.66},{"time":1.2333,"x":4.5,"y":-3.15},{"time":1.3667,"x":-3.79,"y":2.94},{"time":1.4,"x":-8.37,"y":8.72},{"time":1.4333,"x":-11.26,"y":16.99},{"time":1.4667,"x":-9.89,"y":24.73,"curve":"stepped"},{"time":1.8667,"x":-9.89,"y":24.73},{"time":2.1,"x":-4.66,"y":10.25}]},"front-foot-tip":{"rotate":[{"time":1.0667,"angle":42.55,"curve":"stepped"},{"time":1.1333,"angle":42.55},{"time":1.2333,"angle":17.71},{"time":1.3667,"angle":3.63},{"time":1.4333,"angle":1.45}]},"rear-bracer":{"rotate":[{"time":1.0667,"angle":108.71,"curve":"stepped"},{"time":1.1333,"angle":108.71},{"time":1.2333,"angle":64.64},{"time":1.4,"angle":66.25},{"time":1.7,"angle":26.39},{"time":1.8,"angle":13.42},{"time":2,"angle":0},{"time":2.8333,"angle":11.32},{"time":3.6,"angle":0}]},"front-fist":{"rotate":[{"time":1.1,"angle":6.32},{"time":1.2,"angle":0},{"time":1.4667,"angle":24.51},{"time":1.5667,"angle":-6.03},{"time":1.7,"angle":-44.92},{"time":1.9333,"angle":0},{"time":2.7333,"angle":2.04},{"time":3.6,"angle":0}],"scale":[{"time":1.9333,"x":1,"y":1},{"time":2.7333,"x":0.844,"y":1},{"time":3.6,"x":1,"y":1}]},"gun":{"rotate":[{"time":1.2667,"angle":0},{"time":1.7,"angle":17.34},{"time":1.8,"angle":21.99},{"time":2,"angle":0},{"time":2.8333,"angle":6.53},{"time":3.6,"angle":0}]},"hair2":{"rotate":[{"time":1.0667,"angle":26.19,"curve":"stepped"},{"time":1.4333,"angle":26.19},{"time":1.5667,"angle":-16.41,"curve":[0.664,0,0.75,1]},{"time":1.7,"angle":7.44},{"time":1.8,"angle":22.84},{"time":2,"angle":35.35},{"time":2.1,"angle":19.51},{"time":2.1667,"angle":0}]},"hair4":{"rotate":[{"time":1.0667,"angle":26.19,"curve":"stepped"},{"time":1.4333,"angle":26.19},{"time":1.5667,"angle":-16.41,"curve":[0.664,0,0.75,1]},{"time":1.7,"angle":7.44},{"time":1.8,"angle":22.84},{"time":2,"angle":35.35},{"time":2.1,"angle":19.51},{"time":2.1667,"angle":0}]},"hair3":{"rotate":[{"time":1.4333,"angle":0},{"time":1.5667,"angle":-8.68,"curve":[0.664,0,0.75,1]},{"time":1.7,"angle":0}]},"hair1":{"rotate":[{"time":1.4333,"angle":0},{"time":1.5667,"angle":-8.68,"curve":[0.664,0,0.75,1]},{"time":1.7,"angle":0}]},"flare1":{"rotate":[{"time":1.1,"angle":8.2}],"translate":[{"time":1.1,"x":-19.97,"y":149.68},{"time":1.2,"x":3.85,"y":152.43},{"time":1.2333,"x":-15.42,"y":152.29}],"scale":[{"time":1.1,"x":0.805,"y":0.805},{"time":1.1667,"x":1.279,"y":0.605},{"time":1.2,"x":2.151,"y":0.805},{"time":1.2333,"x":1.608,"y":0.805},{"time":1.3,"x":0.547,"y":0.416}],"shear":[{"time":1.1,"x":0,"y":4.63},{"time":1.2333,"x":-5.74,"y":4.63}]},"flare2":{"rotate":[{"time":1.1,"angle":12.29}],"translate":[{"time":1.1,"x":-8.63,"y":132.96},{"time":1.2,"x":4.35,"y":132.93}],"scale":[{"time":1.1,"x":0.864,"y":0.864},{"time":1.1667,"x":0.945,"y":0.945},{"time":1.2,"x":1.511,"y":1.081}],"shear":[{"time":1.1,"x":0,"y":24.03}]},"flare3":{"rotate":[{"time":1.1667,"angle":2.88}],"translate":[{"time":1.1667,"x":3.24,"y":114.81}],"scale":[{"time":1.1667,"x":0.668,"y":0.668}],"shear":[{"time":1.1667,"x":0,"y":38.59}]},"flare4":{"rotate":[{"time":1.1667,"angle":-8.64}],"translate":[{"time":1.1667,"x":-3.82,"y":194.06},{"time":1.2667,"x":-1.82,"y":198.47,"curve":"stepped"},{"time":1.3,"x":-1.94,"y":187.81}],"scale":[{"time":1.1667,"x":0.545,"y":0.545},{"time":1.2667,"x":0.757,"y":0.757}],"shear":[{"time":1.1667,"x":7.42,"y":-22.04}]},"flare5":{"translate":[{"time":1.2,"x":-11.17,"y":176.42},{"time":1.2333,"x":-8.56,"y":179.04,"curve":"stepped"},{"time":1.3,"x":-14.57,"y":168.69}],"scale":[{"time":1.2333,"x":1.146,"y":1},{"time":1.3,"x":0.703,"y":0.61}],"shear":[{"time":1.2,"x":6.9,"y":0}]},"flare6":{"rotate":[{"time":1.2333,"angle":-5.36},{"time":1.2667,"angle":-0.54}],"translate":[{"time":1.2333,"x":14.52,"y":204.67},{"time":1.2667,"x":19.16,"y":212.9,"curve":"stepped"},{"time":1.3,"x":9.23,"y":202.85}],"scale":[{"time":1.2333,"x":0.777,"y":0.49},{"time":1.2667,"x":0.777,"y":0.657},{"time":1.3,"x":0.475,"y":0.401}]},"flare7":{"rotate":[{"time":1.1,"angle":5.98},{"time":1.1333,"angle":32.82}],"translate":[{"time":1.1,"x":-6.34,"y":112.98},{"time":1.1333,"x":2.66,"y":111.6}],"scale":[{"time":1.1,"x":0.588,"y":0.588}],"shear":[{"time":1.1333,"x":-19.93,"y":0}]},"flare8":{"rotate":[{"time":1.2333,"angle":-6.85}],"translate":[{"time":1.1667,"x":66.67,"y":125.52,"curve":"stepped"},{"time":1.2,"x":58.24,"y":113.53,"curve":"stepped"},{"time":1.2333,"x":40.15,"y":114.69}],"scale":[{"time":1.1667,"x":1.313,"y":1.203},{"time":1.2333,"x":1.038,"y":0.95}],"shear":[{"time":1.2,"x":0,"y":-13.01}]},"flare9":{"rotate":[{"time":1.1667,"angle":2.9}],"translate":[{"time":1.1667,"x":28.45,"y":151.35,"curve":"stepped"},{"time":1.2,"x":48.8,"y":191.09,"curve":"stepped"},{"time":1.2333,"x":52,"y":182.52,"curve":"stepped"},{"time":1.2667,"x":77.01,"y":195.96}],"scale":[{"time":1.1667,"x":0.871,"y":1.073},{"time":1.2,"x":0.927,"y":0.944},{"time":1.2333,"x":1.165,"y":1.336}],"shear":[{"time":1.1667,"x":7.95,"y":25.48}]},"flare10":{"rotate":[{"time":1.1667,"angle":2.18}],"translate":[{"time":1.1667,"x":55.64,"y":137.64,"curve":"stepped"},{"time":1.2,"x":90.49,"y":151.07,"curve":"stepped"},{"time":1.2333,"x":114.06,"y":153.05,"curve":"stepped"},{"time":1.2667,"x":90.44,"y":164.61}],"scale":[{"time":1.1667,"x":2.657,"y":0.891},{"time":1.2,"x":3.314,"y":1.425},{"time":1.2333,"x":2.871,"y":0.924},{"time":1.2667,"x":2.317,"y":0.775}],"shear":[{"time":1.1667,"x":-1.35,"y":0}]}},"deform":{"default":{"torso":{"spineboy/torso":[{"time":1.3333},{"time":1.4667,"offset":34,"vertices":[-6.5248,6.64212,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,0.65784,8.28917,0.65787,8.28917,1.41232,5.06705,1.41232,5.06703,1.41235,5.067,0,0,0,0,0.65784,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0,0,3.0E-5,-1.0E-5,0,0,0,0,0,0,0,0,-0.91644,9.00046,-0.91647,9.00049,-0.9164,9.00037,1.76991,9.34927,1.76997,9.34928,-1.01155,7.51457,-1.01145,7.51462,-1.0115,7.51452],"curve":"stepped"},{"time":1.8333,"offset":34,"vertices":[-6.5248,6.64212,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,0.65784,8.28917,0.65787,8.28917,1.41232,5.06705,1.41232,5.06703,1.41235,5.067,0,0,0,0,0.65784,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0.65784,8.28917,0.65784,8.28917,0.65784,8.28917,0.65787,8.28917,0,0,3.0E-5,-1.0E-5,0,0,0,0,0,0,0,0,-0.91644,9.00046,-0.91647,9.00049,-0.9164,9.00037,1.76991,9.34927,1.76997,9.34928,-1.01155,7.51457,-1.01145,7.51462,-1.0115,7.51452]},{"time":2}]}}}},"run":{"slots":{"mouth":{"attachment":[{"time":0,"name":"spineboy/mouth-grind"}]}},"bones":{"front-thigh":{"rotate":[{"time":0,"angle":42.05,"curve":[0.196,0.86,0.75,1]},{"time":0.0667,"angle":46.08},{"time":0.1333,"angle":-20.29},{"time":0.2,"angle":-27.24},{"time":0.2667,"angle":-47.17},{"time":0.3333,"angle":-39.79},{"time":0.4,"angle":-25.86},{"time":0.4667,"angle":14.35},{"time":0.5333,"angle":55.63},{"time":0.6,"angle":69.65},{"time":0.6667,"angle":86.41},{"time":0.7333,"angle":65.88},{"time":0.8,"angle":42.05}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-5.8,"y":11.16},{"time":0.0667,"x":-5.13,"y":11.55},{"time":0.1333,"x":-7.7,"y":8.99},{"time":0.5333,"x":-1.26,"y":3.83},{"time":0.8,"x":0,"y":0}]},"torso":{"rotate":[{"time":0,"angle":-39.71},{"time":0.2,"angle":-57.29},{"time":0.4,"angle":-39.71},{"time":0.6,"angle":-57.29},{"time":0.8,"angle":-39.71}]},"rear-thigh":{"rotate":[{"time":0,"angle":-56.59},{"time":0.0667,"angle":-21.57},{"time":0.1333,"angle":27.95},{"time":0.2,"angle":42.43},{"time":0.2667,"angle":62.37},{"time":0.3333,"angle":45.43},{"time":0.4,"angle":15.67},{"time":0.4667,"angle":28.22},{"time":0.5333,"angle":-38.62},{"time":0.6,"angle":-53.27},{"time":0.6667,"angle":-79.31},{"time":0.7333,"angle":-86.47},{"time":0.8,"angle":-56.59}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-6.76,"y":-3.86},{"time":0.4333,"x":-15.85,"y":7.28},{"time":0.4667,"x":-13.05,"y":4.05},{"time":0.5,"x":-10.25,"y":7.11},{"time":0.5333,"x":-9.02,"y":-5.15},{"time":0.6667,"x":-23.18,"y":-2.58},{"time":0.8,"x":0,"y":0}]},"rear-shin":{"rotate":[{"time":0,"angle":-74},{"time":0.0667,"angle":-83.38},{"time":0.1333,"angle":-106.7},{"time":0.2,"angle":-66.01},{"time":0.2667,"angle":-55.22},{"time":0.3333,"angle":-24.8},{"time":0.4,"angle":18.44,"curve":[0.25,0,0.75,1]},{"time":0.4667,"angle":-56.65},{"time":0.5333,"angle":-11.95,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":-41.27},{"time":0.7333,"angle":-43.61},{"time":0.8,"angle":-74}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-89.37},{"time":0.0667,"angle":-95.67},{"time":0.1333,"angle":-22.01},{"time":0.2,"angle":-316.04},{"time":0.2667,"angle":-274.94},{"time":0.3333,"angle":-273.74},{"time":0.4,"angle":-272.09},{"time":0.4667,"angle":-264.9},{"time":0.5333,"angle":-320.1},{"time":0.6,"angle":-50.84},{"time":0.6667,"angle":-81.73},{"time":0.7333,"angle":-83.92},{"time":0.8,"angle":-89.37}],"translate":[{"time":0,"x":6.25,"y":10.05},{"time":0.2667,"x":4.96,"y":-13.13},{"time":0.6,"x":-2.43,"y":1.95},{"time":0.8,"x":6.25,"y":10.05}]},"front-bracer":{"rotate":[{"time":0,"angle":33.44},{"time":0.0667,"angle":20.54},{"time":0.1333,"angle":15.26},{"time":0.2,"angle":19.29},{"time":0.2667,"angle":22.62},{"time":0.3333,"angle":37.29},{"time":0.4,"angle":41.53},{"time":0.4667,"angle":31.74},{"time":0.5333,"angle":67.45},{"time":0.6667,"angle":39.77},{"time":0.7333,"angle":30.95},{"time":0.8,"angle":33.44}]},"front-fist":{"rotate":[{"time":0,"angle":-19.76},{"time":0.0667,"angle":-37.11},{"time":0.1333,"angle":-50.8},{"time":0.2667,"angle":-12.69},{"time":0.3333,"angle":3.01},{"time":0.4333,"angle":12.06},{"time":0.5333,"angle":13.26},{"time":0.8,"angle":-19.76}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":68.68},{"time":0.0667,"angle":73.89},{"time":0.1333,"angle":-9.64},{"time":0.2,"angle":284.28},{"time":0.2667,"angle":283.29},{"time":0.3333,"angle":278.29},{"time":0.4,"angle":271.03},{"time":0.4667,"angle":263.2},{"time":0.5333,"angle":314.26},{"time":0.6,"angle":16.83},{"time":0.6667,"angle":70.35},{"time":0.7333,"angle":73.54},{"time":0.8,"angle":68.68}],"translate":[{"time":0,"x":-2.57,"y":-8.89},{"time":0.1333,"x":-4.68,"y":7.21},{"time":0.6,"x":4.33,"y":2.06},{"time":0.8,"x":-2.57,"y":-8.89}]},"rear-bracer":{"rotate":[{"time":0,"angle":31.05},{"time":0.0667,"angle":28.28},{"time":0.1333,"angle":49.36},{"time":0.2,"angle":59.37},{"time":0.2667,"angle":8.56},{"time":0.3333,"angle":9.39},{"time":0.4,"angle":11.51},{"time":0.4667,"angle":7.22},{"time":0.5333,"angle":-18.44},{"time":0.6,"angle":11.45},{"time":0.6667,"angle":9.99},{"time":0.7333,"angle":8.29},{"time":0.8,"angle":31.05}]},"neck":{"rotate":[{"time":0,"angle":11.03},{"time":0.2,"angle":13.59},{"time":0.4,"angle":11.03},{"time":0.6,"angle":13.59},{"time":0.8,"angle":11.03}]},"head":{"rotate":[{"time":0,"angle":14.73},{"time":0.1,"angle":12.35},{"time":0.2,"angle":25.55},{"time":0.4,"angle":11.03},{"time":0.5,"angle":12.35},{"time":0.6,"angle":25.55},{"time":0.8,"angle":11.03}]},"front-shin":{"rotate":[{"time":0,"angle":0,"curve":[0.481,0.01,0.75,1]},{"time":0.0667,"angle":-64.42},{"time":0.1333,"angle":-20.6,"curve":[0.25,0,0.75,1]},{"time":0.2667,"angle":-62.52},{"time":0.3333,"angle":-79.75},{"time":0.4,"angle":-78.28},{"time":0.4667,"angle":-118.96,"curve":[0.93,0.01,0.953,0.95]},{"time":0.6,"angle":-88.96},{"time":0.6667,"angle":-79.1},{"time":0.7333,"angle":-47.78},{"time":0.8,"angle":0}]},"front-foot":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-21.13,"curve":[0.121,0.24,0.75,1]},{"time":0.0667,"angle":17.64},{"time":0.1,"angle":29.93},{"time":0.1333,"angle":16.45},{"time":0.2,"angle":-29.23},{"time":0.2667,"angle":-1.62},{"time":0.3333,"angle":-10.23},{"time":0.4667,"angle":-15.99},{"time":0.6,"angle":9.03},{"time":0.7333,"angle":17.33},{"time":0.8,"angle":0}]},"rear-foot":{"rotate":[{"time":0,"angle":0},{"time":0.0667,"angle":-12.04},{"time":0.1333,"angle":-0.87},{"time":0.2,"angle":25.81},{"time":0.2667,"angle":4.71},{"time":0.4,"angle":18.09,"curve":[0.281,0.74,0.75,1]},{"time":0.4333,"angle":-1.71},{"time":0.4667,"angle":27.13},{"time":0.5,"angle":38.84},{"time":0.5333,"angle":30.77},{"time":0.5667,"angle":-20.49},{"time":0.6,"angle":-30.81},{"time":0.6667,"angle":-1.32},{"time":0.8,"angle":0}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":24.73},{"time":0.5,"angle":-11.88},{"time":0.8,"angle":0}]},"hip":{"translate":[{"time":0,"x":0,"y":-24.88,"curve":[0.301,0.8,0.663,0.91]},{"time":0.0667,"x":0,"y":-40.28,"curve":[0.456,0,0.339,0.99]},{"time":0.2667,"x":0,"y":20.51,"curve":[0.17,0.53,0.597,0.99]},{"time":0.4,"x":0,"y":-24.88},{"time":0.4333,"x":0,"y":-26.36},{"time":0.4667,"x":0,"y":-45.06,"curve":[0.25,0,0.75,1]},{"time":0.6667,"x":0,"y":20.51},{"time":0.8,"x":0,"y":-24.88}]},"front-foot-ik":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-41.68},{"time":0.1333,"angle":-102.42},{"time":0.2,"angle":-121.44},{"time":0.2333,"angle":-133.6},{"time":0.2667,"angle":-139.86},{"time":0.3333,"angle":-152.4},{"time":0.3667,"angle":-146.32},{"time":0.5,"angle":-143.8},{"time":0.5333,"angle":-114.84},{"time":0.5667,"angle":-99.09},{"time":0.6,"angle":-63.03},{"time":0.6333,"angle":-47.35},{"time":0.6667,"angle":-31.04},{"time":0.7,"angle":-25.02},{"time":0.7667,"angle":-15.95},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":159.32,"y":38.68},{"time":0.0333,"x":115.32,"y":0.18},{"time":0.0667,"x":16.34,"y":0.18},{"time":0.1333,"x":-116.47,"y":0.18},{"time":0.2,"x":-210.62,"y":126.29},{"time":0.2333,"x":-226.12,"y":203.77},{"time":0.2667,"x":-223.74,"y":258.01},{"time":0.3333,"x":-208.24,"y":250.26},{"time":0.3667,"x":-207.64,"y":215.69},{"time":0.4,"x":-205.86,"y":185.3},{"time":0.4333,"x":-179.04,"y":176.95},{"time":0.4667,"x":-154,"y":157.28},{"time":0.5,"x":-128.97,"y":108.41},{"time":0.5333,"x":-76.68,"y":75.29},{"time":0.5667,"x":-41.24,"y":67.74},{"time":0.6,"x":28.48,"y":59.03},{"time":0.6333,"x":70.89,"y":78.2},{"time":0.6667,"x":110.42,"y":99},{"time":0.7,"x":122.21,"y":79.59},{"time":0.7667,"x":145.33,"y":44.62},{"time":0.8,"x":159.32,"y":38.68}]},"front-ankle-ik":{"translate":[{"time":0,"x":-14.25,"y":-25.96},{"time":0.1333,"x":-13.64,"y":-34.72},{"time":0.1667,"x":-11.42,"y":-12.61},{"time":0.5,"x":-14.89,"y":-31.79},{"time":0.8,"x":-14.25,"y":-25.96}]},"rear-foot-ik":{"rotate":[{"time":0,"angle":0},{"time":0.0667,"angle":18.55},{"time":0.1333,"angle":52.76},{"time":0.1667,"angle":87.4},{"time":0.2333,"angle":133.95},{"time":0.3,"angle":150.92},{"time":0.3667,"angle":168.02},{"time":0.4,"angle":129.09},{"time":0.4333,"angle":125.95},{"time":0.5,"angle":114.27},{"time":0.5333,"angle":85.37},{"time":0.5667,"angle":49.18},{"time":0.6333,"angle":9.51},{"time":0.7,"angle":4.15},{"time":0.7667,"angle":-1.37},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":-248.9,"y":230.07},{"time":0.0667,"x":-228.7,"y":134.12},{"time":0.1333,"x":-145.38,"y":94.22},{"time":0.1667,"x":-82.76,"y":54.33},{"time":0.2333,"x":37.93,"y":74.39},{"time":0.2667,"x":80.38,"y":91.82},{"time":0.3,"x":93.21,"y":67.3},{"time":0.3667,"x":99.34,"y":35.47},{"time":0.4,"x":68.63,"y":0.35},{"time":0.4333,"x":21.58,"y":-2.64},{"time":0.5,"x":-92.91,"y":-2.64},{"time":0.5333,"x":-166.79,"y":-2.64},{"time":0.5667,"x":-252.52,"y":57.15},{"time":0.6333,"x":-304.32,"y":214.03},{"time":0.7,"x":-296.92,"y":281.37},{"time":0.7667,"x":-269.54,"y":257.69},{"time":0.8,"x":-248.9,"y":230.07}]},"rear-ankle-ik":{"translate":[{"time":0,"x":85,"y":-33.59}]},"back-foot-tip":{"rotate":[{"time":0,"angle":-151.52},{"time":0.1333,"angle":-93.33},{"time":0.1667,"angle":-70.78},{"time":0.2333,"angle":22.43},{"time":0.3,"angle":36.86},{"time":0.3667,"angle":34.85},{"time":0.4,"angle":0.77},{"time":0.4333,"angle":0.83,"curve":"stepped"},{"time":0.5333,"angle":0.83},{"time":0.5667,"angle":-61.7},{"time":0.6333,"angle":-139.59},{"time":0.7,"angle":-146.79},{"time":0.8,"angle":-151.52}]},"front-foot-tip":{"rotate":[{"time":0,"angle":42.2},{"time":0.0333,"angle":-0.24},{"time":0.1333,"angle":-0.28},{"time":0.1667,"angle":-59.58},{"time":0.2,"angle":-112.55},{"time":0.2667,"angle":-130.08},{"time":0.3333,"angle":-146.2},{"time":0.5,"angle":-86.49},{"time":0.5333,"angle":-86.99},{"time":0.5667,"angle":-66.87},{"time":0.6,"angle":-22.9},{"time":0.6333,"angle":-12.07},{"time":0.7,"angle":35.4},{"time":0.8,"angle":42.2}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-10.22},{"time":0.2667,"angle":7.16},{"time":0.3667,"angle":-0.15},{"time":0.4667,"angle":-10.22},{"time":0.6333,"angle":7.16},{"time":0.7333,"angle":-0.15},{"time":0.8,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-10.22},{"time":0.1667,"angle":-30.13},{"time":0.2667,"angle":6.38},{"time":0.3667,"angle":-13.49},{"time":0.4667,"angle":-10.22},{"time":0.5333,"angle":-30.13},{"time":0.6333,"angle":6.38},{"time":0.7333,"angle":-13.49},{"time":0.8,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-10.22},{"time":0.2667,"angle":7.16},{"time":0.3667,"angle":-0.15},{"time":0.4667,"angle":-10.22},{"time":0.6333,"angle":7.16},{"time":0.7333,"angle":-0.15},{"time":0.8,"angle":0}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-10.22},{"time":0.1667,"angle":-30.13},{"time":0.2667,"angle":6.38},{"time":0.3667,"angle":-13.49},{"time":0.4667,"angle":-10.22},{"time":0.5333,"angle":-30.13},{"time":0.6333,"angle":6.38},{"time":0.7333,"angle":-13.49},{"time":0.8,"angle":0}]},"torso2":{"rotate":[{"time":0,"angle":4.52}]},"torso3":{"rotate":[{"time":0,"angle":4.52}]}},"deform":{"default":{"eye":{"spineboy/eye-indifferent":[{"time":0,"vertices":[-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867],"curve":[0.25,0,0.75,1]},{"time":0.4,"vertices":[3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867]}]},"goggles":{"spineboy/goggles":[{"time":0,"vertices":[-0.08838,0.23265,-0.04028,0.11366,-1.15417,5.38666,0,0,0,0,0,0,0,0,0,0,-1.08234,5.00095,-1.86743,8.62226,-0.82043,3.80259,-0.0957,0.27988,-0.11633,0.3275,-5.76245,7.7601,-3.05988,10.76797,-2.18188,10.12057,-4.92511,9.4566,0,0,0,0,0.65329,-3.03143,0.55997,-2.59837,-1.40085,6.49587,-0.16394,0.42825,-0.14651,0.37986,-0.13544,0.3509,-0.11295,0.31703,-0.12219,0.33459,-0.12271,0.32938,-0.10715,0.28685,-0.90088,4.0234,-0.04678,0.13842,-1.0719,4.96331,-1.06213,4.94196,-1.04929,4.90511,-0.04034,0.1196,-0.07523,0.20426,-0.10211,0.26987,-0.12775,0.33331,-0.13965,0.36775,-0.14172,0.37709,-0.13071,0.35703,-0.11951,0.33389,-0.14542,0.39532,-0.16638,0.43952,-1.40085,6.49587,-0.82043,3.80259,-0.82043,3.80259,-0.82043,3.80259,-1.82895,8.48514,-1.82895,8.48514,-1.82895,8.48514],"curve":[0.25,0,0.75,1]},{"time":0.4,"vertices":[1.7334,-8.03619,0.70187,-3.25497,0.39651,-1.84367,0,0,0,0,0,0,0,0,0,0,1.08755,-5.04639,3.97546,-18.45124,0.47232,-2.1937,1.59595,-7.39851,2.05963,-9.54877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.58685,-11.98995,2.93106,-13.58876,2.71149,-12.57045,2.01114,-9.32378,2.26413,-10.49626,2.34348,-10.8643,2.0517,-9.51168,1.96225,-9.10095,0.75806,-3.51469,0.08057,-0.37485,0.57971,-2.69226,0.35056,-1.63069,0.65036,-3.01589,1.40933,-6.5339,1.98853,-9.21902,4.07944,-18.92243,3.45761,-16.03436,3.45532,-16.02369,2.42819,-11.25721,2.14264,-9.93373,2.06396,-9.5659,2.59061,-12.00682,0,0,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[-0.08838,0.23265,-0.04028,0.11366,-1.15417,5.38666,0,0,0,0,0,0,0,0,0,0,-1.08234,5.00095,-1.86743,8.62226,-0.82043,3.80259,-0.0957,0.27988,-0.11633,0.3275,-5.76245,7.7601,-3.05988,10.76797,-2.18188,10.12057,-4.92511,9.4566,0,0,0,0,0.65329,-3.03143,0.55997,-2.59837,-1.40085,6.49587,-0.16394,0.42825,-0.14651,0.37986,-0.13544,0.3509,-0.11295,0.31703,-0.12219,0.33459,-0.12271,0.32938,-0.10715,0.28685,-0.90088,4.0234,-0.04678,0.13842,-1.0719,4.96331,-1.06213,4.94196,-1.04929,4.90511,-0.04034,0.1196,-0.07523,0.20426,-0.10211,0.26987,-0.12775,0.33331,-0.13965,0.36775,-0.14172,0.37709,-0.13071,0.35703,-0.11951,0.33389,-0.14542,0.39532,-0.16638,0.43952,-1.40085,6.49587,-0.82043,3.80259,-0.82043,3.80259,-0.82043,3.80259,-1.82895,8.48514,-1.82895,8.48514,-1.82895,8.48514]}]},"head":{"spineboy/head":[{"time":0,"offset":32,"vertices":[2.81555,0.98518,1.01535,8.62647,-2.70273,4.09556,-4.48743,7.13697,-4.76981,3.34322,0,0,-2.25769,-4.31037,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.14777,14.58548,-2.86661,13.27987,-2.55057,11.81706,-2.17331,10.06675,-1.96667,9.10786,-2.01523,9.33308,-2.29977,10.65304,-2.63971,12.23277,-3.05856,14.172,0,0,0,0,0,0,0,0,-0.59756,2.77132,-1.96329,9.10585,-2.16217,10.02965],"curve":[0.25,0,0.75,1]},{"time":0.4,"offset":34,"vertices":[3.14838,-14.61261,3.14838,-14.61261,3.14838,-14.61261,0.83426,-3.87112,0,0,0,0,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0.17175,-0.81676,0,0,0,0,0,0,0,0,0.55618,-2.58074,0.41714,-1.93558,1.04282,-4.83889],"curve":[0.25,0,0.75,1]},{"time":0.8,"offset":32,"vertices":[2.81555,0.98518,1.01535,8.62647,-2.70273,4.09556,-4.48743,7.13697,-4.76981,3.34322,0,0,-2.25769,-4.31037,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3.14777,14.58548,-2.86661,13.27987,-2.55057,11.81706,-2.17331,10.06675,-1.96667,9.10786,-2.01523,9.33308,-2.29977,10.65304,-2.63971,12.23277,-3.05856,14.172,0,0,0,0,0,0,0,0,-0.59756,2.77132,-1.96329,9.10585,-2.16217,10.02965]}]},"mouth":{"spineboy/mouth-grind":[{"time":0,"vertices":[-10.19202,11.7786,-1.60019,14.33763,0.02328,8.88684,-8.56857,6.32779],"curve":[0.25,0,0.75,1]},{"time":0.4,"vertices":[-1.86761,-2.71146,0.01212,-11.43619,0.01212,-11.43619,-1.86761,-2.71146],"curve":[0.25,0,0.75,1]},{"time":0.8,"vertices":[-10.19202,11.7786,-1.60019,14.33763,0.02328,8.88684,-8.56857,6.32779]}]},"torso":{"spineboy/torso":[{"time":0,"offset":14,"vertices":[6.35965,1.33517,6.35962,1.33517,6.35968,1.33517,6.35965,1.33517,6.35962,1.33517,0,0,0,0,0,0,0,0,0.82059,5.12242,0,0,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,0.82059,5.12243,0.82062,5.12241,0.82059,5.12242,0.82059,5.12243,0.82062,5.12241,1.43295,3.92841,1.43304,3.92826,0.82059,5.12242,0.82059,5.12243,0.82059,5.12243,0.82062,5.12241,0.24156,4.36882,0.24155,4.36882,0.24158,4.36882,0.24156,4.36882,0.24155,4.36882,0.24158,4.36882,0.24156,4.36882,0.24155,4.36882,0,0,3.0E-5,-1.0E-5,0.82059,5.12243,0.82062,5.12241,-0.77553,4.89196,-0.77551,4.89193,0,0,0,0,-0.80443,5.76191,-0.80437,5.76189,-0.80463,5.76189,0.68706,7.31482,0.687,7.31474,-0.35934,5.4162,-0.35928,5.41616,-0.35965,5.41621]},{"time":0.4,"offset":4,"vertices":[1.46152,2.96601,1.46152,2.966,0.68634,3.23445,0.68634,3.23446,0.68634,3.23445,2.20619,0.10388,2.20618,0.10388,2.20624,0.10387,0,0,0,0,-0.31029,-2.89859,-0.31027,-2.8986,0,0,0,0,-0.1851,0.38208,0.33795,-3.61552,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0.23715,2.56816,0.23701,2.56804,0.23724,2.56822,0.39803,4.23793,0.39799,4.23787,0.39807,4.23792,-0.55164,4.21406,-0.55157,4.21406,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,-0.29404,-8.94628,-0.29398,-8.94629,-0.02417,-9.50224,-0.02417,-9.50224,-0.02417,-9.50224,0.23018,-9.9391,0.23019,-9.9391,-4.64136,-8.88914,-4.64133,-8.88915,-2.62137,-9.24012,-2.62134,-9.24013,-1.70074,-5.16261,-1.70071,-5.16261,-1.70071,-5.16262,-1.70074,-5.16261,-1.70071,-5.16261,-1.70071,-5.16262,-1.70074,-5.16261,-1.70071,-5.16261,0,0,3.0E-5,-1.0E-5,-7.37057,-10.47317,-7.37057,-10.47318,1.06334,-5.92199,1.06334,-5.92201,0,0,0,0,-0.49223,-2.6754,-0.49225,-2.67543,-0.49225,-2.67542,3.36295,-7.48149,3.36296,-7.48156,-2.08173,-6.76357,-2.08174,-6.76364,-2.08188,-6.76358]},{"time":0.8,"offset":14,"vertices":[6.35965,1.33517,6.35962,1.33517,6.35968,1.33517,6.35965,1.33517,6.35962,1.33517,0,0,0,0,0,0,0,0,0.82059,5.12242,0,0,0,0,0,0,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,0,0,3.0E-5,-1.0E-5,3.0E-5,-1.0E-5,0.82059,5.12243,0.82062,5.12241,0.82059,5.12242,0.82059,5.12243,0.82062,5.12241,1.43295,3.92841,1.43304,3.92826,0.82059,5.12242,0.82059,5.12243,0.82059,5.12243,0.82062,5.12241,0.24156,4.36882,0.24155,4.36882,0.24158,4.36882,0.24156,4.36882,0.24155,4.36882,0.24158,4.36882,0.24156,4.36882,0.24155,4.36882,0,0,3.0E-5,-1.0E-5,0.82059,5.12243,0.82062,5.12241,-0.77553,4.89196,-0.77551,4.89193,0,0,0,0,-0.80443,5.76191,-0.80437,5.76189,-0.80463,5.76189,0.68706,7.31482,0.687,7.31474,-0.35934,5.4162,-0.35928,5.41616,-0.35965,5.41621]}]}}},"events":[{"time":0,"name":"footstep"},{"time":0.3667,"name":"footstep"}]},"shoot":{"slots":{"muzzle":{"color":[{"time":0.1333,"color":"fffffffe"},{"time":0.1667,"color":"ffffff62"}],"attachment":[{"time":0.0333,"name":"spineboy/muzzle01"},{"time":0.0667,"name":"spineboy/muzzle02"},{"time":0.1,"name":"spineboy/muzzle03"},{"time":0.1333,"name":"spineboy/muzzle04"},{"time":0.1667,"name":"spineboy/muzzle05"},{"time":0.2,"name":null}]},"muzzle-glow":{"color":[{"time":0,"color":"ff0c0c00"},{"time":0.0333,"color":"ffc9adfe","curve":[0.831,0.04,0.899,0.73]},{"time":0.3,"color":"ff400cfe"},{"time":0.6333,"color":"ff0c0c00"}],"attachment":[{"time":0,"name":"spineboy/muzzle-glow"}]},"muzzle-ring":{"color":[{"time":0.0333,"color":"d8bafffe","curve":[0.846,0,0.903,0.79]},{"time":0.2333,"color":"d7baff00"}],"attachment":[{"time":0.0333,"name":"spineboy/muzzle-ring"},{"time":0.2333,"name":null}]},"muzzle-ring2":{"color":[{"time":0.0333,"color":"d8bafffe","curve":[0.846,0,0.903,0.79]},{"time":0.2,"color":"d7baff00"}],"attachment":[{"time":0.0333,"name":"spineboy/muzzle-ring"},{"time":0.2,"name":null}]},"muzzle-ring3":{"color":[{"time":0.0333,"color":"d8bafffe","curve":[0.846,0,0.903,0.79]},{"time":0.2,"color":"d7baff00"}],"attachment":[{"time":0.0333,"name":"spineboy/muzzle-ring"},{"time":0.2,"name":null}]},"muzzle-ring4":{"color":[{"time":0.0333,"color":"d8bafffe","curve":[0.846,0,0.903,0.79]},{"time":0.2,"color":"d7baff00"}],"attachment":[{"time":0.0333,"name":"spineboy/muzzle-ring"},{"time":0.2,"name":null}]}},"bones":{"gun":{"rotate":[{"time":0.0667,"angle":0,"curve":[0.419,0.64,0.778,0.95]},{"time":0.1333,"angle":45.35,"curve":[0.069,0.51,0.75,1]},{"time":0.6333,"angle":0}]},"muzzle":{"translate":[{"time":0,"x":-11.02,"y":25.16}]},"rear-upper-arm":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.1,"x":4.74,"y":9.98},{"time":0.2333,"x":0,"y":0}]},"rear-bracer":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.1,"x":-4.36,"y":-2.88},{"time":0.2333,"x":0,"y":0}]},"gun-tip":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":3.15,"y":0.39}],"scale":[{"time":0,"x":0.366,"y":0.366},{"time":0.0333,"x":1.453,"y":1.453},{"time":0.3,"x":0.366,"y":0.366}]},"muzzle-ring":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.2333,"x":64.47,"y":0}],"scale":[{"time":0.0333,"x":1,"y":1},{"time":0.2333,"x":5.951,"y":5.951}]},"muzzle-ring2":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.2,"x":172.57,"y":0}],"scale":[{"time":0.0333,"x":1,"y":1},{"time":0.2,"x":4,"y":4}]},"muzzle-ring3":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.2,"x":277.17,"y":0}],"scale":[{"time":0.0333,"x":1,"y":1},{"time":0.2,"x":2,"y":2}]},"muzzle-ring4":{"translate":[{"time":0.0333,"x":0,"y":0},{"time":0.2,"x":392.06,"y":0}]}}},"walk":{"bones":{"rear-foot-ik":{"rotate":[{"time":0,"angle":-32.82},{"time":0.1,"angle":-77.14},{"time":0.2,"angle":-73.32},{"time":0.4333,"angle":30.49},{"time":0.5,"angle":-0.28,"curve":"stepped"},{"time":0.6667,"angle":-0.28},{"time":0.7667,"angle":-33.78},{"time":0.8667,"angle":-32.82}],"translate":[{"time":0,"x":-167.32,"y":0.12},{"time":0.1,"x":-205.81,"y":42.58},{"time":0.2,"x":-119.04,"y":61.48,"curve":[0.296,0.33,0.634,0.67]},{"time":0.4333,"x":92.52,"y":26.2},{"time":0.5,"x":47.15,"y":-0.96},{"time":0.5333,"x":27.23,"y":-0.86},{"time":0.6667,"x":-42.87,"y":-0.52},{"time":0.7667,"x":-110.82,"y":-0.18},{"time":0.8667,"x":-167.32,"y":0.12}]},"front-foot-ik":{"rotate":[{"time":0,"angle":29.01},{"time":0.0667,"angle":-0.28,"curve":"stepped"},{"time":0.1,"angle":-0.28},{"time":0.2,"angle":0},{"time":0.3333,"angle":-28.33},{"time":0.4333,"angle":-43.6},{"time":0.5333,"angle":-78.46},{"time":0.6667,"angle":-80.78},{"time":0.7667,"angle":-36.75},{"time":0.8667,"angle":29.01}],"translate":[{"time":0,"x":153.74,"y":27.82},{"time":0.0667,"x":109.33,"y":-0.52},{"time":0.1,"x":91.43,"y":-0.43},{"time":0.2,"x":36.13,"y":-0.15},{"time":0.3333,"x":-38.12,"y":0.22},{"time":0.4333,"x":-94.33,"y":0.5},{"time":0.5333,"x":-136.78,"y":57.05},{"time":0.6667,"x":-54.53,"y":69.29},{"time":0.8667,"x":153.74,"y":27.82}]},"hip":{"translate":[{"time":0,"x":3.42,"y":-16.2},{"time":0.1,"x":13.57,"y":-20.63,"curve":[0.548,0,0.75,1]},{"time":0.3333,"x":6.91,"y":2.52,"curve":[0.25,0,0.75,1]},{"time":0.4333,"x":6.54,"y":-14.78},{"time":0.5333,"x":6.83,"y":-19.85,"curve":[0.548,0,0.75,1]},{"time":0.7667,"x":6.91,"y":2.52,"curve":[0.25,0,0.75,1]},{"time":0.8667,"x":3.42,"y":-16.2}]},"front-foot-tip":{"rotate":[{"time":0,"angle":28.96},{"time":0.0667,"angle":0.82},{"time":0.1,"angle":1.68,"curve":"stepped"},{"time":0.4333,"angle":1.68},{"time":0.5333,"angle":-59.66},{"time":0.6667,"angle":-94.92},{"time":0.7667,"angle":-35.84},{"time":0.8667,"angle":28.96}]},"torso":{"rotate":[{"time":0,"angle":-20.72},{"time":0.2,"angle":0.92,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":-20.72,"curve":[0.136,0.36,0.75,1]},{"time":0.6667,"angle":0.92,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-20.72}]},"neck":{"rotate":[{"time":0,"angle":18.06},{"time":0.2,"angle":12.81,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":15.4},{"time":0.4333,"angle":18.06,"curve":[0.168,0.27,0.75,1]},{"time":0.6667,"angle":12.81,"curve":[0.25,0,0.75,1]},{"time":0.7667,"angle":15.95},{"time":0.8667,"angle":18.06}]},"head":{"rotate":[{"time":0,"angle":8.66},{"time":0.2,"angle":3.4,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":5.99},{"time":0.4333,"angle":8.66,"curve":[0.168,0.27,0.75,1]},{"time":0.6667,"angle":3.4,"curve":[0.25,0,0.75,1]},{"time":0.7667,"angle":6.55},{"time":0.8667,"angle":8.66}]},"back-foot-tip":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-59.01},{"time":0.2,"angle":-99.81},{"time":0.3333,"angle":-28.38},{"time":0.4333,"angle":48.63},{"time":0.5,"angle":0.85},{"time":0.8667,"angle":0}]},"front-thigh":{"rotate":[{"time":0,"angle":41.32}],"translate":[{"time":0,"x":15.47,"y":-0.08},{"time":0.1,"x":9.94,"y":-2.81},{"time":0.2,"x":4.34,"y":0.72},{"time":0.3333,"x":0.02,"y":-1.11},{"time":0.4333,"x":-4.26,"y":0.02},{"time":0.5333,"x":1.53,"y":-1.94},{"time":0.6667,"x":8.32,"y":-5.38},{"time":0.7667,"x":6.11,"y":-4.87},{"time":0.8667,"x":15.47,"y":-0.08}]},"rear-thigh":{"rotate":[{"time":0,"angle":-32.3}],"translate":[{"time":0,"x":-24.88,"y":0.12},{"time":0.2,"x":-10.72,"y":-1.15},{"time":0.4333,"x":-1.33,"y":0.01},{"time":0.6667,"x":-16.28,"y":0.08},{"time":0.7667,"x":-20.18,"y":0.1},{"time":0.8667,"x":-24.88,"y":0.12}]},"torso2":{"rotate":[{"time":0,"angle":-5},{"time":0.2,"angle":-15.91,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":-5,"curve":[0.136,0.36,0.75,1]},{"time":0.6667,"angle":-15.91,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-5}]},"torso3":{"rotate":[{"time":0,"angle":-4.68},{"time":0.2,"angle":-19.5,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":-4.68,"curve":[0.136,0.36,0.75,1]},{"time":0.6667,"angle":-19.5,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-4.68}]},"front-upper-arm":{"rotate":[{"time":0,"angle":-9.51},{"time":0.1,"angle":-19.4,"curve":[0.482,0,0.645,1.09]},{"time":0.4667,"angle":-303.86,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-9.51}],"translate":[{"time":0,"x":1.46,"y":3.5},{"time":0.2,"x":-5.92,"y":4.93},{"time":0.4333,"x":-5.24,"y":-4.38},{"time":0.6667,"x":-7.69,"y":-8.62},{"time":0.8667,"x":1.46,"y":3.5}]},"front-bracer":{"rotate":[{"time":0,"angle":1.95},{"time":0.1,"angle":18.36,"curve":[0.246,0,0.645,1.09]},{"time":0.4667,"angle":24.83,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":1.95}]},"front-fist":{"rotate":[{"time":0,"angle":-28.48},{"time":0.1,"angle":-27,"curve":[0.25,0,0.645,1.09]},{"time":0.3333,"angle":-33.94,"curve":[0.407,-0.01,0.75,1]},{"time":0.5333,"angle":3.77,"curve":[0.25,0,0.75,1]},{"time":0.8667,"angle":-28.48}]},"rear-upper-arm":{"rotate":[{"time":0,"angle":28.28,"curve":[0.25,0,0.75,1]},{"time":0.1333,"angle":22.94,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":326.34},{"time":0.5667,"angle":312.87,"curve":[0.407,-0.01,0.75,1]},{"time":0.7,"angle":-6.78,"curve":[0.407,-0.01,0.75,1]},{"time":0.8667,"angle":28.28}],"translate":[{"time":0,"x":-0.18,"y":1.45},{"time":0.2,"x":0.72,"y":2.17},{"time":0.4333,"x":16.77,"y":19.95},{"time":0.8667,"x":-0.18,"y":1.45}]},"hair2":{"rotate":[{"time":0,"angle":18.54},{"time":0.1,"angle":1.97},{"time":0.2,"angle":-5.65},{"time":0.4333,"angle":24.96},{"time":0.6333,"angle":-6.26},{"time":0.8667,"angle":18.54}]},"hair4":{"rotate":[{"time":0,"angle":1.97},{"time":0.1,"angle":-5.65},{"time":0.3333,"angle":24.96},{"time":0.5333,"angle":-6.26},{"time":0.7667,"angle":18.54},{"time":0.8667,"angle":1.97}]},"rear-bracer":{"rotate":[{"time":0,"angle":10.06,"curve":[0.25,0,0.75,1]},{"time":0.1333,"angle":11.68,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":-3.66},{"time":0.5667,"angle":-1.27,"curve":[0.407,-0.01,0.75,1]},{"time":0.7,"angle":-4.16,"curve":[0.407,-0.01,0.75,1]},{"time":0.8667,"angle":10.06}]},"gun":{"rotate":[{"time":0,"angle":-14.67,"curve":[0.25,0,0.75,1]},{"time":0.2333,"angle":18.91,"curve":[0.25,0,0.75,1]},{"time":0.4333,"angle":25.77},{"time":0.5667,"angle":12.57,"curve":[0.407,-0.01,0.75,1]},{"time":0.7,"angle":-8.69,"curve":[0.407,-0.01,0.75,1]},{"time":0.8667,"angle":-14.67}]},"rear-shin":{"rotate":[{"time":0,"angle":-5}]},"rear-foot":{"rotate":[{"time":0,"angle":3.52}]},"aim-constraint-target":{"rotate":[{"time":0,"angle":-3.19}]},"front-shin":{"rotate":[{"time":0,"angle":-10.44}]},"front-foot":{"rotate":[{"time":0,"angle":-0.79}]}},"deform":{"default":{"eye":{"spineboy/eye-indifferent":[{"time":0,"vertices":[-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867],"curve":"stepped"},{"time":0.1333,"vertices":[-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867],"curve":[0.25,0,0.75,1]},{"time":0.4333,"vertices":[3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849],"curve":"stepped"},{"time":0.6,"vertices":[3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849,3.92969,-18.23849],"curve":[0.25,0,0.75,1]},{"time":0.8667,"vertices":[-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867,-0.15329,0.70867]}]},"goggles":{"spineboy/goggles":[{"time":0,"vertices":[-0.08838,0.23265,-0.04028,0.11366,-1.15417,5.38666,0,0,0,0,0,0,0,0,0,0,-1.08234,5.00095,-1.86743,8.62226,-0.82043,3.80259,-0.0957,0.27988,-0.11633,0.3275,-5.76245,7.7601,-3.05988,10.76797,-2.18188,10.12057,-4.92511,9.4566,0,0,0,0,0.65329,-3.03143,0.55997,-2.59837,-1.40085,6.49587,-0.16394,0.42825,-0.14651,0.37986,-0.13544,0.3509,0.70346,4.33792,0.69421,4.35548,0.6937,4.35027,0.70926,4.30774,-0.90088,4.0234,-0.04678,0.13842,-1.0719,4.96331,-1.06213,4.94196,-1.04929,4.90511,-0.04034,0.1196,-0.07523,0.20426,-0.10211,0.26987,-0.12775,0.33331,-0.13965,0.36775,-0.14172,0.37709,-0.13071,0.35703,-0.11951,0.33389,-0.14542,0.39532,-0.16638,0.43952,-1.40085,6.49587,-0.82043,3.80259,-0.82043,3.80259,-0.82043,3.80259,-1.82895,8.48514,-1.82895,8.48514,-1.82895,8.48514],"curve":"stepped"},{"time":0.1333,"vertices":[-0.08838,0.23265,-0.04028,0.11366,-1.15417,5.38666,0,0,0,0,0,0,0,0,0,0,-1.08234,5.00095,-1.86743,8.62226,-0.82043,3.80259,-0.0957,0.27988,-0.11633,0.3275,-5.76245,7.7601,-3.05988,10.76797,-2.18188,10.12057,-4.92511,9.4566,0,0,0,0,0.65329,-3.03143,0.55997,-2.59837,-1.40085,6.49587,-0.16394,0.42825,-0.14651,0.37986,-0.13544,0.3509,0.70346,4.33792,0.69421,4.35548,0.6937,4.35027,0.70926,4.30774,-0.90088,4.0234,-0.04678,0.13842,-1.0719,4.96331,-1.06213,4.94196,-1.04929,4.90511,-0.04034,0.1196,-0.07523,0.20426,-0.10211,0.26987,-0.12775,0.33331,-0.13965,0.36775,-0.14172,0.37709,-0.13071,0.35703,-0.11951,0.33389,-0.14542,0.39532,-0.16638,0.43952,-1.40085,6.49587,-0.82043,3.80259,-0.82043,3.80259,-0.82043,3.80259,-1.82895,8.48514,-1.82895,8.48514,-1.82895,8.48514],"curve":[0.25,0,0.75,1]},{"time":0.4333,"vertices":[0.72116,-13.02245,-0.08078,-15.10208,0.5881,-9.07231,0,0,-0.95035,2.12869,-4.29099,4.74269,-0.37964,-1.86985,-0.50616,-2.49316,2.05878,-14.16591,3.97546,-18.45124,0.47232,-2.1937,1.59595,-7.39851,2.05963,-9.54877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.58685,-11.98995,2.93106,-13.58876,2.71149,-12.57045,1.12061,-13.71136,1.3736,-14.88384,1.45294,-15.25188,1.16116,-13.89926,0.95001,-14.08721,-0.25418,-8.50095,-0.4256,-2.86804,0.72946,-6.04102,2.13202,-10.56477,-0.57986,-18.66593,-1.0582,-18.68787,1.98853,-9.21902,2.82358,-21.9123,3.45761,-16.03436,3.45532,-16.02369,2.42819,-11.25721,2.14264,-9.93373,2.06396,-9.5659,2.59061,-12.00682,0,0,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,-0.53992,-7.17996],"curve":"stepped"},{"time":0.6,"vertices":[0.72116,-13.02245,-0.08078,-15.10208,0.5881,-9.07231,0,0,-0.95035,2.12869,-4.29099,4.74269,-0.37964,-1.86985,-0.50616,-2.49316,2.05878,-14.16591,3.97546,-18.45124,0.47232,-2.1937,1.59595,-7.39851,2.05963,-9.54877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.58685,-11.98995,2.93106,-13.58876,2.71149,-12.57045,1.12061,-13.71136,1.3736,-14.88384,1.45294,-15.25188,1.16116,-13.89926,0.95001,-14.08721,-0.25418,-8.50095,-0.4256,-2.86804,0.72946,-6.04102,2.13202,-10.56477,-0.57986,-18.66593,-1.0582,-18.68787,1.98853,-9.21902,2.82358,-21.9123,3.45761,-16.03436,3.45532,-16.02369,2.42819,-11.25721,2.14264,-9.93373,2.06396,-9.5659,2.59061,-12.00682,0,0,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,0.47232,-2.1937,-0.53992,-7.17996],"curve":[0.25,0,0.75,1]},{"time":0.8667,"vertices":[-0.08838,0.23265,-0.04028,0.11366,-1.15417,5.38666,0,0,0,0,0,0,0,0,0,0,-1.08234,5.00095,-1.86743,8.62226,-0.82043,3.80259,-0.0957,0.27988,-0.11633,0.3275,-5.76245,7.7601,-3.05988,10.76797,-2.18188,10.12057,-4.92511,9.4566,0,0,0,0,0.65329,-3.03143,0.55997,-2.59837,-1.40085,6.49587,-0.16394,0.42825,-0.14651,0.37986,-0.13544,0.3509,0.70346,4.33792,0.69421,4.35548,0.6937,4.35027,0.70926,4.30774,-0.90088,4.0234,-0.04678,0.13842,-1.0719,4.96331,-1.06213,4.94196,-1.04929,4.90511,-0.04034,0.1196,-0.07523,0.20426,-0.10211,0.26987,-0.12775,0.33331,-0.13965,0.36775,-0.14172,0.37709,-0.13071,0.35703,-0.11951,0.33389,-0.14542,0.39532,-0.16638,0.43952,-1.40085,6.49587,-0.82043,3.80259,-0.82043,3.80259,-0.82043,3.80259,-1.82895,8.48514,-1.82895,8.48514,-1.82895,8.48514]}]},"head":{"spineboy/head":[{"time":0,"offset":8,"vertices":[2.09991,9.25076,8.45337,4.30371,-3.35175,8.87419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.81555,0.98518,1.01535,8.62647,-2.70273,4.09556,-4.48743,7.13697,-4.76981,3.34322,0,0,-2.25769,-4.31037,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.13202,7.95453,2.22333,9.79501,8.95061,4.55695,-3.54895,9.39622,-6.13202,7.95453,-3.54895,9.39622,-3.54895,9.39622,8.95061,4.55695,0,0,3.18365,15.68383,14.26176,7.26074,-5.65479,14.97183,3.18365,15.68383,0,0,0,0,1.99811,9.84312,-6.13202,7.95453,-3.54895,9.39622,0,0,0,0,2.3309,11.48366,0,0,0,0,0,0,2.66449,13.12421,0,0,-3.14777,14.58548,-2.86661,13.27987,-2.55057,11.81706,-2.17331,10.06675,-1.96667,9.10786,-2.01523,9.33308,-2.29977,10.65304,-2.63971,12.23277,-3.05856,14.172,0,0,0,0,0,0,0,0,-0.59756,2.77132,-1.96329,9.10585,-2.16217,10.02965],"curve":"stepped"},{"time":0.1333,"offset":8,"vertices":[2.09991,9.25076,8.45337,4.30371,-3.35175,8.87419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.81555,0.98518,1.01535,8.62647,-2.70273,4.09556,-4.48743,7.13697,-4.76981,3.34322,0,0,-2.25769,-4.31037,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.13202,7.95453,2.22333,9.79501,8.95061,4.55695,-3.54895,9.39622,-6.13202,7.95453,-3.54895,9.39622,-3.54895,9.39622,8.95061,4.55695,0,0,3.18365,15.68383,14.26176,7.26074,-5.65479,14.97183,3.18365,15.68383,0,0,0,0,1.99811,9.84312,-6.13202,7.95453,-3.54895,9.39622,0,0,0,0,2.3309,11.48366,0,0,0,0,0,0,2.66449,13.12421,0,0,-3.14777,14.58548,-2.86661,13.27987,-2.55057,11.81706,-2.17331,10.06675,-1.96667,9.10786,-2.01523,9.33308,-2.29977,10.65304,-2.63971,12.23277,-3.05856,14.172,0,0,0,0,0,0,0,0,-0.59756,2.77132,-1.96329,9.10585,-2.16217,10.02965],"curve":[0.25,0,0.75,1]},{"time":0.4333,"offset":34,"vertices":[3.14838,-14.61261,3.14838,-14.61261,3.14838,-14.61261,0.83426,-3.87112,0,0,0,0,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-1.59174,-7.84007,-0.89545,-4.41003,-0.89545,-4.41003,-1.59174,-7.84007,0.55618,-2.58074,0.41714,-1.93558,1.04282,-4.83889],"curve":"stepped"},{"time":0.6,"offset":34,"vertices":[3.14838,-14.61261,3.14838,-14.61261,3.14838,-14.61261,0.83426,-3.87112,0,0,0,0,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-0.72369,-5.22679,-1.59174,-7.84007,-0.89545,-4.41003,-0.89545,-4.41003,-1.59174,-7.84007,0.55618,-2.58074,0.41714,-1.93558,1.04282,-4.83889]},{"time":0.8667,"offset":8,"vertices":[2.09991,9.25076,8.45337,4.30371,-3.35175,8.87419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.81555,0.98518,1.01535,8.62647,-2.70273,4.09556,-4.48743,7.13697,-4.76981,3.34322,0,0,-2.25769,-4.31037,0,0,0,0,-0.45578,2.11445,-0.45578,2.11445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-6.13202,7.95453,2.22333,9.79501,8.95061,4.55695,-3.54895,9.39622,-6.13202,7.95453,-3.54895,9.39622,-3.54895,9.39622,8.95061,4.55695,0,0,3.18365,15.68383,14.26176,7.26074,-5.65479,14.97183,3.18365,15.68383,0,0,0,0,1.99811,9.84312,-6.13202,7.95453,-3.54895,9.39622,0,0,0,0,2.3309,11.48366,0,0,0,0,0,0,2.66449,13.12421,0,0,-3.14777,14.58548,-2.86661,13.27987,-2.55057,11.81706,-2.17331,10.06675,-1.96667,9.10786,-2.01523,9.33308,-2.29977,10.65304,-2.63971,12.23277,-3.05856,14.172,0,0,0,0,0,0,0,0,-0.59756,2.77132,-1.96329,9.10585,-2.16217,10.02965]}]},"mouth":{"spineboy/mouth-grind":[{"time":0,"vertices":[-10.19202,11.7786,-1.60019,14.33763,0.02328,8.88684,-8.56857,6.32779],"curve":"stepped"},{"time":0.1333,"vertices":[-10.19202,11.7786,-1.60019,14.33763,0.02328,8.88684,-8.56857,6.32779],"curve":[0.25,0,0.75,1]},{"time":0.4333,"vertices":[-1.87524,-8.97547,0.00449,-17.7002,0.00449,-17.7002,-1.87524,-8.97547],"curve":"stepped"},{"time":0.6,"vertices":[-1.87524,-8.97547,0.00449,-17.7002,0.00449,-17.7002,-1.87524,-8.97547],"curve":[0.25,0,0.75,1]},{"time":0.8667,"vertices":[-10.19202,11.7786,-1.60019,14.33763,0.02328,8.88684,-8.56857,6.32779]}],"spineboy/mouth-smile":[{"time":0,"vertices":[-6.59216,5.02815,5.28665,-1.62104,2.43057,-7.10703,-6.07846,8.24725],"curve":"stepped"},{"time":0.1333,"vertices":[-6.59216,5.02815,5.28665,-1.62104,2.43057,-7.10703,-6.07846,8.24725],"curve":[0.25,0,0.75,1]},{"time":0.4333,"vertices":[1.95737,-8.63879,0.58041,-17.27288,1.98795,-27.30994,-8.04211,-23.88625],"curve":"stepped"},{"time":0.6,"vertices":[1.95737,-8.63879,0.58041,-17.27288,1.98795,-27.30994,-8.04211,-23.88625],"curve":[0.25,0,0.75,1]},{"time":0.8667,"vertices":[-6.59216,5.02815,5.28665,-1.62104,2.43057,-7.10703,-6.07846,8.24725]}]},"torso":{"spineboy/torso":[{"time":0,"offset":32,"vertices":[0.99754,-8.62222,-4.36671,-11.12821,3.38991,-3.5328,3.68875,-3.22399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.00336,4.8839,-1.39807,4.78593,0,0,0,0,0,0,0,0,0,0,0,0,0.99754,-8.62222,1.74744,-8.50252,0,0,0,0,0,0,0,0,0.41353,-3.58589,0.72717,-3.5363,-0.58401,5.03633,-1.02026,4.96621,0,0,0,0,0,0,-0.3511,3.02677,-0.61319,2.98462,0.39218,-3.38733,0.68637,-3.34027,0.95636,-3.27316,-1.63116,5.58357]},{"time":0.1,"vertices":[-2.2937,0.83079,-1.87766,0.23508,10.64218,3.4945,8.76065,8.13096,6.81654,-2.65173,7.4079,0.46964,6.52606,4.22304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.46204,-2.67851,-1.00093,-5.80334,0.25089,-5.88366,-0.61595,-3.57126,0.15442,-3.62069,1.01733,-3.47825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.95602,6.51617,-0.21823,8.17005,0.66148,0.04926,0.60684,0.26677,0.45453,0.48326,2.96719,0.85007,2.5141,1.78982,1.42711,0.95876,1.02582,1.37934,0.9938,8.43367,-2.3866,8.1498,4.34331,10.36832,1.32321,11.29527,-2.3905,11.22245,-0.27824,3.32372,-1.36951,3.04126,-2.45068,2.2625,-0.69302,-4.01772,0.17358,-4.07335,1.04111,8.28638,-1.54007,8.31738,3.14871,8.52884,-0.07013,9.53309,0.51686,2.99771,-0.12991,3.03919,0.51686,2.99771,-0.12991,3.03919,4.59116,11.52126,1.17288,12.46493,-2.98672,12.23994,3.95926,5.46152,1.91373,6.46839,-0.23099,-1.33925,0.05792,-1.35778,0.3815,-1.30437,-2.41547,12.32078]},{"time":0.2,"vertices":[-1.21463,-3.20385,0.13651,-3.42358,14.41745,0.02832,13.25629,5.67007,11.94255,-4.91476,12.89688,-0.65636,12.12503,4.44476,0,0,0,0,0,0,0,0,0,0,-0.12337,0.36149,-0.237,0.29979,-0.16426,3.2699,-1.24411,3.02848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9.74475,6.80592,6.30356,10.07764,0.66148,0.04926,0.60684,0.26677,0.45453,0.48326,2.96719,0.85007,2.5141,1.78982,1.42711,0.95876,1.02582,1.37934,0.9938,8.43367,-2.3866,8.1498,3.41957,5.0114,1.55508,5.86423,-0.86441,6.00507,-0.27824,3.32372,-1.36951,3.04126,-2.45068,2.2625,0,0,0,0,1.25369,3.30791,-0.14114,3.53476,5.09421,5.43802,2.55927,6.99835,-0.29503,1.56245,-0.79877,1.37497,0,0,0,0,3.66742,6.16434,1.40475,7.03388,-1.46063,7.02255,3.95926,5.46152,1.91373,6.46839,0,0,0,0,0,0,-1.77957,10.14687]},{"time":0.4333,"offset":4,"vertices":[-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.74069,-3.60475,1.03217,-3.53232,0.42329,-3.65553,0.74069,-3.60475,1.03217,-3.53232,0.42329,-3.65553,0.74069,-3.60475]},{"time":0.5333,"offset":4,"vertices":[-0.19458,10.61421,-1.69006,10.61533,1.1946,10.40868,-0.19458,10.61421,-1.69006,10.61533,-0.72083,6.21444,-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.14001,-9.69365,2.7449,-9.38902,-0.58665,-11.38687,1.25098,-11.38506,3.2207,-11.01592,0.42329,-3.65553,0.74069,-3.60475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.28842,-4.39755,1.237,-4.22984]},{"time":0.6667,"offset":4,"vertices":[-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,-1.75449,6.0049,-0.72083,6.21444,-1.25909,6.12791,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.74069,-3.60475,1.03217,-3.53232,0.42329,-3.65553,0.74069,-3.60475,1.03217,-3.53232,0.42329,-3.65553,0.74069,-3.60475]},{"time":0.8667,"offset":32,"vertices":[0.99754,-8.62222,-4.36671,-11.12821,3.38991,-3.5328,3.68875,-3.22399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.00336,4.8839,-1.39807,4.78593,0,0,0,0,0,0,0,0,0,0,0,0,0.99754,-8.62222,1.74744,-8.50252,0,0,0,0,0,0,0,0,0.41353,-3.58589,0.72717,-3.5363,-0.58401,5.03633,-1.02026,4.96621,0,0,0,0,0,0,-0.3511,3.02677,-0.61319,2.98462,0.39218,-3.38733,0.68637,-3.34027,0.95636,-3.27316,-1.63116,5.58357]}]}}},"events":[{"time":0,"name":"footstep"},{"time":0.4333,"name":"footstep"}]}}},"stretchyman":{"skeleton":{"hash":"HJ0Ypaj8K4Dbf8rRDi+OiW9uGpo","spine":"3.6.39","width":340.95,"height":572.1},"bones":[{"name":"root"},{"name":"hip controller","parent":"root","x":8.81,"y":237.34},{"name":"head controller","parent":"hip controller","x":11.7,"y":333.26},{"name":"spine","parent":"head controller","length":37.53,"rotation":89.39,"x":-31.53,"y":-164.78},{"name":"back arm 1","parent":"spine","length":18.9,"rotation":-88.81,"x":16,"y":-4.59},{"name":"back arm 2","parent":"back arm 1","length":18.9,"rotation":-0.38,"x":19.41},{"name":"back arm 3","parent":"back arm 1","length":18.9,"rotation":-0.88,"x":38.75,"y":-0.13},{"name":"back arm 4","parent":"back arm 1","length":18.9,"rotation":-1.23,"x":58.19,"y":-0.43},{"name":"back arm 5","parent":"back arm 1","length":18.9,"rotation":-0.88,"x":77.6,"y":-0.84},{"name":"back arm 6","parent":"back arm 1","length":18.9,"rotation":-0.15,"x":97.05,"y":-1.14},{"name":"back arm 7","parent":"back arm 1","length":18.9,"rotation":-0.19,"x":116.41,"y":-1.19},{"name":"back arm 8","parent":"back arm 1","length":18.9,"rotation":-0.19,"x":116.41,"y":-1.19},{"name":"back arm 9","parent":"back arm 1","length":18.9,"rotation":-0.19,"x":116.41,"y":-1.19},{"name":"back arm 10","parent":"back arm 1","length":18.9,"rotation":-0.19,"x":116.41,"y":-1.19},{"name":"back arm 11","parent":"back arm 1","length":18.9,"rotation":-0.19,"x":116.41,"y":-1.19},{"name":"back arm 12","parent":"back arm 1","length":18.9,"rotation":-1.09,"x":135.76,"y":-1.26},{"name":"back arm controller","parent":"root","rotation":-127.84,"x":170.18,"y":402.84},{"name":"back arm middle","parent":"root","rotation":89.39,"x":77.24,"y":409.27},{"name":"back arm elbow","parent":"back arm middle","rotation":-93.49,"x":0.32,"y":-49.63},{"name":"back leg controller","parent":"root","rotation":14.64,"x":60.8,"y":1.64},{"name":"back foot 1","parent":"back leg controller","length":33.24,"rotation":-18.27,"x":0.33,"y":1.22},{"name":"back foot 2","parent":"back foot 1","length":32.29,"rotation":9.67,"x":33.24},{"name":"back foot 3","parent":"back foot 2","length":15.87,"rotation":3.15,"x":32.29},{"name":"back hand","parent":"back arm controller","length":37.41,"rotation":176.22,"x":20.94,"y":3.33},{"name":"hip","parent":"hip controller","x":-6.71,"y":20.98},{"name":"back leg","parent":"hip","rotation":-68.28,"x":25.73,"y":-7.23},{"name":"back leg 1","parent":"back leg","length":41,"rotation":-73.16},{"name":"back leg 2","parent":"back leg 1","length":41,"rotation":-4.07,"x":34.57},{"name":"back leg 3","parent":"back leg 1","length":41,"rotation":-5.24,"x":81.79,"y":-2.29},{"name":"back leg 4","parent":"back leg 1","length":41,"rotation":-16.6,"x":121.21,"y":-11.27},{"name":"back leg 5","parent":"back leg 1","length":41,"rotation":-32.36,"x":160.16,"y":-24.86},{"name":"back leg 6","parent":"back leg 1","length":41,"rotation":-30.76,"x":197.04,"y":-39.98},{"name":"back leg 7","parent":"back leg 1","length":41,"rotation":-30.63,"x":233.19,"y":-57.32},{"name":"back leg 8","parent":"back leg 1","length":41,"rotation":-30.63,"x":233.19,"y":-57.32},{"name":"back leg 9","parent":"back leg 1","length":41,"rotation":-30.63,"x":233.19,"y":-57.32},{"name":"back leg 10","parent":"back leg 1","length":41,"rotation":-30.63,"x":233.19,"y":-57.32},{"name":"back leg 11","parent":"back leg 1","length":41,"rotation":-30.63,"x":233.19,"y":-57.32},{"name":"back leg 12","parent":"back leg 1","length":41,"rotation":-33.79,"x":267.29,"y":-77.39},{"name":"back leg middle","parent":"root","x":44.69,"y":135.97},{"name":"back leg knee","parent":"back leg middle","rotation":82.72,"x":7.73,"y":41.98},{"name":"front arm 1","parent":"spine","length":38.33,"rotation":118.58,"x":27.13,"y":4.9},{"name":"front arm 2","parent":"front arm 1","length":35.67,"rotation":-0.44,"x":38.33,"y":0.01},{"name":"front arm 3","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 4","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 5","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 6","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 7","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 8","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 9","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 10","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 11","parent":"front arm 1","length":32.65,"rotation":14.65,"x":74,"y":0.12},{"name":"front arm 12","parent":"front arm 1","length":29.18,"rotation":17.17,"x":106.58,"y":1.99},{"name":"front arm controller","parent":"root","rotation":81.71,"x":-120.71,"y":280.73},{"name":"front arm middle","parent":"root","rotation":89.39,"x":-72.23,"y":371.96},{"name":"front arm elbow","parent":"front arm middle","rotation":-87.21,"x":-4.2,"y":-43.67},{"name":"front leg controller","parent":"root","rotation":7.86,"x":-120.95,"y":9.65},{"name":"front foot 1","parent":"front leg controller","length":26.3,"rotation":-28.33,"x":0.99,"y":6.43},{"name":"front foot 2","parent":"front foot 1","length":29.12,"rotation":8.4,"x":26.3},{"name":"front foot 3","parent":"front foot 2","length":23.49,"rotation":6.07,"x":29.12},{"name":"front hand","parent":"front arm controller","length":46.32,"rotation":-165.4,"x":22,"y":5.23},{"name":"front leg","parent":"hip","rotation":-95.55,"x":-19.31,"y":-14.28},{"name":"front leg 1","parent":"front leg","length":37.2,"rotation":-51.2},{"name":"front leg 2","parent":"front leg 1","length":37.2,"rotation":3.45,"x":33.75,"y":0.01},{"name":"front leg 3","parent":"front leg 1","length":37.2,"rotation":-6.12,"x":74.4,"y":-1.08},{"name":"front leg 4","parent":"front leg 1","length":37.2,"rotation":-10.02,"x":111.4,"y":-5.28},{"name":"front leg 5","parent":"front leg 1","length":37.2,"rotation":-28.4,"x":147.76,"y":-14.99},{"name":"front leg 6","parent":"front leg 1","length":37.2,"rotation":-24.33,"x":182.41,"y":-27.57},{"name":"front leg 7","parent":"front leg 1","length":37.2,"rotation":-23,"x":216.44,"y":-42.55},{"name":"front leg 8","parent":"front leg 1","length":37.2,"rotation":-23,"x":216.44,"y":-42.55},{"name":"front leg 9","parent":"front leg 1","length":37.2,"rotation":-23,"x":216.44,"y":-42.55},{"name":"front leg 10","parent":"front leg 1","length":37.2,"rotation":-23,"x":216.44,"y":-42.55},{"name":"front leg 11","parent":"front leg 1","length":37.2,"rotation":-23,"x":216.44,"y":-42.55},{"name":"front leg 12","parent":"front leg 1","length":37.2,"rotation":-31.81,"x":248.61,"y":-61.03},{"name":"front leg middle","parent":"root","x":-48.97,"y":149.67},{"name":"front leg knee","parent":"front leg middle","rotation":100.84,"x":-3.74,"y":21.86},{"name":"head","parent":"spine","length":89.06,"rotation":-14.37,"x":62.91,"y":-10.66}],"slots":[{"name":"back arm","bone":"root","attachment":"stretchyman/back arm"},{"name":"back leg","bone":"root","attachment":"stretchyman/back leg"},{"name":"body","bone":"root","attachment":"stretchyman/body"},{"name":"front arm","bone":"root","attachment":"stretchyman/front arm"},{"name":"back leg path","bone":"hip","attachment":"back leg path"},{"name":"head","bone":"head","attachment":"stretchyman/head"},{"name":"front leg path","bone":"hip","attachment":"front leg path"},{"name":"front arm path","bone":"spine","attachment":"front arm path"},{"name":"back arm path","bone":"spine","attachment":"back arm path"}],"ik":[{"name":"back arm middle look at hand","order":2,"bones":["back arm middle"],"target":"back arm controller"},{"name":"back leg middle look at foot","order":0,"bones":["back leg middle"],"target":"back leg controller"},{"name":"front arm middle look at hand","order":3,"bones":["front arm middle"],"target":"front arm controller"},{"name":"front leg middle look at foot","order":1,"bones":["front leg middle"],"target":"front leg controller"}],"transform":[{"name":"back foot to knee rotate","order":8,"bones":["back foot 1"],"target":"back leg knee","rotateMix":0.75,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"front foot to knee rotate","order":9,"bones":["front foot 1"],"target":"front leg knee","rotateMix":0.75,"translateMix":0,"scaleMix":0,"shearMix":0}],"path":[{"name":"back arm path","order":4,"bones":["back arm 1","back arm 2","back arm 3","back arm 4","back arm 5","back arm 6","back arm 7","back arm 8","back arm 9","back arm 10","back arm 11","back arm 12"],"target":"back arm path","spacingMode":"percent","rotateMode":"chainScale","spacing":0.0833},{"name":"back leg path","order":5,"bones":["back leg 1","back leg 2","back leg 3","back leg 4","back leg 5","back leg 6","back leg 7","back leg 8","back leg 9","back leg 10","back leg 11","back leg 12"],"target":"back leg path","spacingMode":"percent","rotateMode":"chainScale","spacing":0.083},{"name":"front arm path","order":7,"bones":["front arm 1","front arm 2","front arm 3","front arm 4","front arm 5","front arm 6","front arm 7","front arm 8","front arm 9","front arm 10","front arm 11","front arm 12"],"target":"front arm path","spacingMode":"percent","rotateMode":"chainScale","spacing":0.0833},{"name":"front leg path","order":6,"bones":["front leg 1","front leg 2","front leg 3","front leg 4","front leg 5","front leg 6","front leg 7","front leg 8","front leg 9","front leg 10","front leg 11","front leg 12"],"target":"front leg path","spacingMode":"percent","rotateMode":"chainScale","spacing":0.0833}],"skins":{"default":{"back arm":{"stretchyman/back arm":{"type":"mesh","uvs":[0.53017,0.73775,0.43887,0.70087,0.39442,0.66763,0.38731,0.60829,0.39554,0.55018,0.43301,0.49305,0.49497,0.43504,0.54946,0.37384,0.64009,0.3236,0.7557,0.26483,0.83884,0.21068,0.92658,0.15101,0.97607,0.09921,0.95355,0.01377,0.70016,0.00808,0.59106,0.07665,0.52029,0.14344,0.44176,0.19842,0.36305,0.26103,0.28288,0.3219,0.22422,0.39023,0.18999,0.45861,0.16162,0.53006,0.1474,0.60088,0.16432,0.67197,0.17414,0.72094,0.15687,0.76931,0.13186,0.83934,0,0.89316,0.16206,0.98357,0.458,1,0.70563,0.95343,0.72979,0.86087,0.62711,0.77691,0.76115,0.11693,0.57963,0.23016,0.42893,0.35052,0.31337,0.47538,0.28192,0.54005,0.27446,0.6699,0.30494,0.74847,0.84251,0.05802,0.66796,0.17398,0.49619,0.28955,0.36334,0.41199,0.26707,0.60451],"triangles":[40,1,0,26,25,40,27,26,40,33,27,40,33,40,0,31,33,32,30,29,27,28,27,29,33,30,27,30,33,31,41,14,13,41,13,12,34,14,41,15,14,34,11,41,12,34,41,11,25,24,39,1,25,39,1,39,2,40,25,1,39,45,3,39,3,2,24,23,45,24,45,39,45,22,38,23,22,45,3,38,4,45,38,3,38,21,37,22,21,38,4,37,5,38,37,4,37,20,44,21,20,37,5,44,6,37,44,5,44,19,36,20,19,44,6,36,7,44,36,6,36,18,43,19,18,36,7,43,8,36,43,7,43,17,35,18,17,43,8,35,9,43,35,8,35,16,42,17,16,35,9,42,10,35,42,9,42,15,34,16,15,42,10,34,11,42,34,10],"vertices":[2,15,20.43,17.54,0.34266,23,3.57,19.08,0.65734,3,14,28.31,11.58,0.11158,15,10.69,10.93,0.54511,23,-4.69,12.21,0.34331,4,13,36.23,9.54,0.12553,14,18.84,8.13,0.36105,15,1,8.11,0.43006,23,-11.93,10.19,0.08336,4,12,36.47,10.04,0.10217,13,19.13,8.52,0.39836,14,1.59,8.45,0.36105,15,-16.02,9.48,0.13842,4,11,37.44,9.82,0.10986,12,19.82,8.5,0.36731,13,2.35,8.36,0.39836,14,-15.16,9.6,0.12447,4,10,38.38,10.14,0.09886,11,20.52,9.21,0.386,12,2.91,9.06,0.36731,13,-14.34,10.31,0.14783,4,9,38.7,10.99,0.1064,10,20.57,10.35,0.36746,11,2.65,10.25,0.386,12,-14.72,11.32,0.14014,4,8,38.64,10.66,0.10637,9,20.41,9.88,0.37503,10,2.15,9.83,0.36746,11,-15.88,10.58,0.15114,4,7,39.61,13.02,0.1241,8,21.6,12.15,0.35727,9,3.62,12.03,0.37503,10,-14.56,12.51,0.1436,4,6,37.24,14.9,0.1221,7,18.93,14.55,0.377,8,1.24,14.52,0.35727,9,-16.41,15.18,0.14363,5,5,39.37,13.76,0.09747,6,19.38,14.5,0.32634,7,1.04,14.49,0.377,8,-16.49,15.19,0.1259,3,-1.75,-46.74,0.0733,5,4,40.57,12.25,0.034,5,19.86,13.8,0.18747,6,-0.09,13.82,0.29134,7,-18.47,14.17,0.1279,3,11.48,-37.62,0.3593,4,4,24.43,11.95,0.124,5,4.16,12.37,0.18747,6,-15.54,11.86,0.07924,3,21.04,-27.87,0.6093,2,4,2.67,3.9,0.128,3,23.58,-7.31,0.872,4,4,11.31,-13.51,0.152,5,-6.42,-13.87,0.19234,6,-24.44,-14.79,0.07353,3,7.06,-4.47,0.58213,5,4,33.19,-15.72,0.062,5,16.73,-14.56,0.19234,6,-1.06,-14.62,0.28864,7,-20.53,-14.24,0.12489,3,-4.31,-14.19,0.33213,5,5,37.26,-12.86,0.10234,6,19.3,-12.16,0.32364,7,-0.06,-12.16,0.39103,8,-19.8,-11.37,0.10886,3,-15.83,-24.15,0.07413,4,6,37.13,-11.39,0.12511,7,17.8,-11.72,0.39103,8,-2.06,-11.66,0.37136,9,-21.71,-10.84,0.11251,4,7,37.61,-10.56,0.14114,8,17.66,-11.3,0.37136,9,-2.11,-11.23,0.37726,10,-21.8,-10.55,0.11024,4,8,36.99,-11.18,0.13749,9,17.09,-11.86,0.37726,10,-2.58,-11.79,0.38221,11,-22.68,-10.77,0.10303,4,9,37.41,-10.49,0.13976,10,17.91,-11.07,0.38221,11,-2.04,-11,0.38095,12,-22.38,-9.5,0.09709,4,10,37.56,-8.68,0.14697,11,17.91,-9.53,0.38095,12,-2.33,-9.41,0.36617,13,-22.65,-7.6,0.10592,4,11,38.54,-7.49,0.15291,12,18.48,-8.8,0.36617,13,-1.9,-8.71,0.37049,14,-22.13,-7.03,0.11043,4,12,38.85,-7.22,0.14408,13,18.58,-8.81,0.37049,14,-1.73,-8.73,0.36393,15,-21.45,-7.43,0.1215,4,13,39.16,-6.74,0.13957,14,19.13,-8.26,0.36393,15,-0.8,-8.23,0.43553,23,-15.81,-5.9,0.06097,3,14,33.79,-6.73,0.1285,15,13.68,-7.56,0.53053,23,-5.13,-7.54,0.34098,2,15,26.6,-6.56,0.36738,23,5.75,-8.52,0.63262,2,15,44.05,-6.21,0.05335,23,20.59,-10.22,0.94665,1,23,30.87,-20.21,1,1,23,49.93,-9.89,1,1,23,54.77,11.12,1,1,23,46.67,29.58,1,1,23,28.15,32.66,1,2,15,29.51,23.24,0.05102,23,10.97,26.26,0.94898,3,5,18.98,0.06,0.38641,6,0.08,0.07,0.32369,3,3.34,-26.39,0.2899,2,7,18.95,0.07,0.52032,8,0.05,0.06,0.47968,2,9,18.95,0.06,0.49488,10,0.06,0.06,0.50512,2,11,19.03,-0.05,0.51703,12,0.13,-0.06,0.48297,2,12,19.07,0.08,0.49501,13,0.18,0.07,0.50499,2,14,18.84,-0.26,0.48677,15,-0.09,-0.26,0.51323,2,15,22.11,1.95,0.30584,23,2.77,1.6,0.69416,3,4,18.84,-0.22,0.248,5,-0.02,-0.23,0.12,3,14.48,-16.65,0.632,2,6,19.18,0.14,0.49629,7,0.29,0.13,0.50371,2,8,19.15,-0.16,0.49182,9,0.23,-0.17,0.50818,2,10,18.93,-0.15,0.49443,11,0.02,-0.15,0.50557,2,13,18.83,-0.17,0.52014,14,-0.09,-0.16,0.47986],"hull":34}},"back arm path":{"back arm path":{"type":"path","lengths":[106.62,198.93,406.24],"vertexCount":9,"vertices":[1,18,-41.28,-123.89,1,1,4,-0.85,4.67,1,1,4,27.52,2.26,1,1,18,-5.14,-34.78,1,1,18,0.08,-0.02,1,1,18,6.58,41.4,1,1,23,-22.38,6.17,1,1,23,-0.51,0.25,1,1,18,-36.52,158.33,1]}},"back leg":{"stretchyman/back leg":{"type":"mesh","uvs":[0.76701,0.06381,0.79431,0.15768,0.79249,0.2378,0.78521,0.31278,0.76872,0.39078,0.75145,0.46559,0.70946,0.54093,0.64771,0.61395,0.58596,0.68618,0.5104,0.75723,0.43383,0.83024,0.34491,0.89238,0.52028,0.91568,0.82656,0.94598,1,0.96776,0.79345,1,0.4699,0.99628,0,0.97632,0.04783,0.93473,0.12252,0.86976,0.223,0.80262,0.30575,0.73447,0.39046,0.66632,0.45745,0.5967,0.51852,0.52607,0.52443,0.45793,0.50079,0.38553,0.47124,0.3149,0.43775,0.24551,0.40228,0.1755,0.36879,0.0993,0.37864,0.02285,0.61777,0,0.55092,0.09546,0.58777,0.16803,0.62111,0.24072,0.6454,0.31339,0.65143,0.38667,0.63788,0.45973,0.60352,0.53251,0.55429,0.60465,0.49017,0.67484,0.41163,0.74387,0.32551,0.81181,0.24103,0.87992,0.16228,0.9496,0.489,0.96913,0.8126,0.97098],"triangles":[33,31,32,34,32,0,47,13,14,15,47,14,47,12,13,15,12,47,46,12,15,16,46,15,46,11,12,16,11,46,16,45,11,16,17,45,45,19,44,18,19,45,45,44,11,17,18,45,19,20,44,44,20,43,11,43,10,44,43,11,43,21,42,20,21,43,10,42,9,43,42,10,42,22,41,21,22,42,9,41,8,42,41,9,41,23,40,22,23,41,8,40,7,41,40,8,40,24,39,23,24,40,7,39,6,40,39,7,39,25,38,24,25,39,6,38,5,39,38,6,25,26,37,38,25,37,5,37,4,38,37,5,26,27,36,4,37,36,26,36,37,3,4,36,2,36,35,3,36,2,27,28,35,27,35,36,1,35,34,2,35,1,28,29,34,28,34,35,30,31,33,34,33,32,34,0,1,29,30,33,29,33,34],"vertices":[3,26,-11.44,22.9,0.33714,27,-53.17,22.52,0.15886,24,44.5,7.54,0.504,4,26,40.99,20.93,0.33714,27,-0.47,20.93,0.31609,28,-43,19.89,0.17611,24,53.52,-20.73,0.17067,4,26,85.06,16.76,0.17447,27,43.88,17.08,0.31609,28,1.58,17.13,0.34285,29,-41.5,15.46,0.16659,4,27,85.23,12.92,0.15723,28,43.19,13.99,0.34285,29,0.4,14.05,0.3135,30,-42.71,11.96,0.18642,4,28,86.32,9.84,0.16674,29,43.94,11.68,0.3135,30,1.12,11.79,0.33999,31,-41.23,9.78,0.17976,4,29,85.7,9.27,0.14691,30,43.18,11.47,0.33999,31,0.42,11.54,0.33195,32,-41.67,10.01,0.18115,4,30,85.79,8.7,0.15357,31,42.99,10.87,0.33195,32,0.75,10.92,0.34812,33,-42,9.3,0.16636,4,31,84.78,8.13,0.15219,32,42.63,9.74,0.34812,33,0.46,9.78,0.29187,34,-41.36,8.28,0.20782,4,32,84.08,8.5,0.16698,33,42.5,10.18,0.29187,34,0.34,10.22,0.33785,35,-41.35,9.39,0.20331,4,33,84.57,9.16,0.12551,34,42.22,10.73,0.33785,35,0.56,10.74,0.34113,36,-40.37,10.88,0.19551,5,34,85.2,11.35,0.13003,35,43.55,12.23,0.34113,36,2.68,12.22,0.334,37,-37.31,12.97,0.12137,20,19.61,42.34,0.07347,5,35,81.69,11.29,0.13782,36,40.84,11.15,0.334,37,0.51,11.15,0.12137,20,14.56,21.27,0.22101,21,-14.85,24.11,0.1858,5,36,41.72,30.19,0.1385,37,2.54,30.15,0.12137,20,33.17,17.26,0.22101,21,2.83,17.03,0.35109,22,-28.48,18.62,0.16804,3,20,65.05,13.51,0.14753,21,33.63,7.98,0.35109,22,1.78,7.89,0.50137,2,21,51.09,1.88,0.39537,22,18.88,0.85,0.60463,3,20,65,-3.99,0.19114,21,30.65,-9.26,0.37227,22,-2.15,-9.16,0.43659,4,37,45.93,33.8,0.19478,20,33.03,-7.77,0.32969,21,-1.51,-7.63,0.37227,22,-34.16,-5.76,0.10326,3,37,64.71,-12.5,0.46356,20,-14.35,-11.39,0.39425,21,-48.83,-3.23,0.14219,3,36,82.06,-11.59,0.12895,37,40.07,-12.39,0.66794,20,-12.12,2.5,0.20311,4,35,84.43,-12.03,0.14236,36,43.34,-12.18,0.31992,37,1.59,-12.21,0.47316,20,-8.64,24.19,0.06456,4,34,83.17,-11.46,0.14858,35,42.93,-10.61,0.32712,36,1.82,-10.61,0.31992,37,-39.54,-9.84,0.20438,4,33,82.26,-12.51,0.15983,34,42.38,-10.98,0.32209,35,2.06,-10.95,0.32712,36,-39.08,-10.82,0.19097,4,32,80.44,-11.93,0.18186,33,41.31,-10.35,0.3113,34,1.47,-10.32,0.32209,35,-38.93,-11.11,0.18475,4,31,80.12,-11.49,0.19417,32,40.22,-10.02,0.32103,33,0.43,-10.02,0.3113,34,-39.15,-11.48,0.1735,4,30,79.47,-10.64,0.17517,31,39.66,-8.71,0.35233,32,-0.34,-8.74,0.32103,33,-40.71,-10.35,0.15147,4,29,80.26,-13.35,0.17729,30,41.26,-11.33,0.33121,31,1.98,-11.28,0.35233,32,-37.54,-12.7,0.13917,4,28,78.62,-16.64,0.17757,29,39.64,-15.05,0.33305,30,0.99,-15.06,0.33121,31,-37.3,-16.97,0.15817,4,27,78.45,-18.24,0.16933,28,38.78,-17.31,0.34157,29,-0.01,-17.36,0.33305,30,-38.24,-19.34,0.15604,4,26,79.58,-18.66,0.14993,27,39.15,-18.38,0.35273,28,-0.45,-18.41,0.34157,29,-39,-20.07,0.15576,4,26,40.05,-18.68,0.3126,27,-0.54,-18.68,0.35273,28,-40.06,-19.68,0.164,24,17.76,-37.54,0.17067,3,26,-2.83,-18.19,0.3126,27,-43.61,-18.51,0.1834,24,8.2,-12.41,0.504,2,26,-44.65,-13.42,0.16267,24,3.48,12.36,0.83733,2,26,-50.67,11.34,0.16267,24,25.15,24.83,0.83733,1,26,0.06,-0.01,1,2,26,41.03,0.01,0.5,27,0.03,0.01,0.5,2,27,41.15,-0.02,0.5,28,0.15,-0.01,0.5,2,28,41.04,0.07,0.5,29,0.03,0.07,0.5,2,29,41.05,0,0.5,30,0.05,0,0.5,2,30,41.09,0.02,0.5,31,0.08,0.03,0.5,2,31,41.05,0,0.5,32,0.05,0,0.5,2,32,40.99,-0.02,0.5,33,-0.01,-0.02,0.5,2,33,41.04,-0.02,0.5,34,0.04,-0.02,0.5,2,34,41.05,-0.01,0.5,35,0.05,0,0.5,2,35,41.02,0,0.5,36,0.02,0,0.5,2,36,41.02,0.04,0.5,37,0.02,0.04,0.5,2,37,41.22,-0.02,0.5,20,0.01,-0.01,0.5,2,20,33.26,-0.02,0.5,21,0.02,-0.02,0.5,2,21,32.39,0,0.5,22,0.1,0,0.5],"hull":33}},"back leg path":{"back leg path":{"type":"path","lengths":[133.53,267.82,995.36],"vertexCount":9,"vertices":[1,39,-65.29,207.72,1,1,25,-0.02,0,1,1,25,50.52,-5.06,1,1,39,-0.98,46.4,1,1,39,0.21,-0.06,1,1,39,1.1,-35.35,1,1,20,6.84,53.14,1,1,20,-0.11,-1.05,1,1,39,-137.18,-707.64,1]}},"body":{"stretchyman/body":{"type":"mesh","uvs":[0.55635,0.02043,0.65961,0.05828,0.78353,0.10942,0.9268,0.18014,1,0.27921,0.94745,0.35262,0.79643,0.39087,0.65316,0.40577,0.64799,0.42912,0.6338,0.47704,0.60829,0.52782,0.594,0.57651,0.56651,0.62555,0.51999,0.67858,0.46832,0.72899,0.41453,0.77558,0.36177,0.82427,0.3101,0.87091,0.24084,0.92475,0.3123,0.93332,0.50467,0.95184,0.7674,0.97207,0.48818,1,0.25027,0.99241,0,0.98442,0.09942,0.89971,0.16783,0.85381,0.22591,0.80791,0.28012,0.76201,0.34079,0.7153,0.3808,0.66859,0.38855,0.62148,0.38209,0.57204,0.37693,0.5205,0.37564,0.47057,0.35886,0.42191,0.33046,0.3591,0.32917,0.30994,0.36402,0.27531,0.39371,0.22578,0.35241,0.16699,0.24011,0.07599,0.31497,0,0.48278,0,0.57283,0.31157,0.58881,0.21587,0.54359,0.14553,0.46038,0.07393,0.40659,0.01552,0.4722,0.02759,0.82602,0.34702,0.51372,0.37373,0.40906,0.3598,0.51212,0.42463,0.51114,0.47426,0.50788,0.52479,0.49778,0.57456,0.47561,0.62419,0.44427,0.67305,0.40245,0.72186,0.34978,0.76912,0.29024,0.81545,0.22733,0.86138,0.16635,0.9078,0.1112,0.95496,0.29197,0.96842,0.49773,0.97461],"triangles":[22,66,21,22,65,66,65,19,66,66,19,20,65,18,19,66,20,21,65,64,18,23,65,22,24,64,23,23,64,65,24,25,64,64,63,18,64,25,63,63,62,18,63,26,62,63,25,26,18,62,17,62,61,17,17,61,16,26,27,62,62,27,61,61,60,16,16,60,15,27,28,61,61,28,60,60,59,15,15,59,14,28,29,60,60,29,59,59,58,14,14,58,13,29,30,59,59,30,58,58,57,13,13,57,12,30,31,58,58,31,57,57,56,12,12,56,11,56,57,32,57,31,32,56,55,11,11,55,10,55,56,33,56,32,33,55,54,10,55,33,54,10,54,9,33,34,54,8,9,53,9,54,53,54,34,53,8,53,7,51,52,44,52,36,37,35,52,53,53,51,7,53,52,51,35,36,52,34,35,53,51,44,7,52,37,38,6,7,50,6,50,5,50,7,44,5,50,4,50,44,4,44,3,4,44,45,3,38,39,44,44,39,45,39,46,45,45,2,3,52,38,44,39,40,46,45,46,2,40,47,46,40,41,47,46,1,2,46,47,1,41,48,47,41,42,48,47,0,1,0,49,43,0,47,49,47,48,49,49,48,43,48,42,43],"vertices":[2,3,18.79,-20.15,0.92926,24,9.33,139.89,0.07074,2,3,-0.05,-29.91,0.82617,24,18.89,120.95,0.17383,2,3,-22.16,-42.49,0.60329,24,31.23,98.71,0.39671,2,3,-55.01,-60.01,0.34807,24,48.4,65.67,0.65193,3,3,-100.37,-65.79,0.12882,24,53.69,20.25,0.84044,61,-72.3,67.56,0.03074,4,3,-132.59,-54.87,0.03658,24,42.43,-11.85,0.85117,61,-17.79,60.82,0.07688,62,-53.73,61.35,0.03538,4,24,19.26,-26.53,0.69639,61,11.18,39.88,0.16943,62,-25.13,40.13,0.1196,63,-63.11,39.7,0.01459,5,24,-1.59,-30.86,0.42916,61,22.87,19.83,0.25279,62,-13.9,19.96,0.25016,63,-51.5,19.61,0.05501,64,-90.16,17.02,0.01287,6,24,-3.55,-41.26,0.15191,61,40.14,19.31,0.29827,62,3.47,19.28,0.35204,63,-34.11,19.05,0.13322,64,-72.74,16.97,0.05343,65,-111.54,12.37,0.01114,7,24,-8.07,-62.53,0.04251,61,75.6,17.76,0.17636,62,39.11,17.38,0.29786,63,1.59,17.39,0.23457,64,-36.94,16.34,0.16786,65,-75.77,13.23,0.065,66,-112.91,8.65,0.01583,7,61,113.23,14.64,0.06939,62,76.89,13.89,0.18489,63,39.46,14.16,0.25334,64,1.14,14.21,0.257,65,-37.55,12.68,0.15084,66,-75.13,9.64,0.06672,67,-114.18,4.76,0.01782,8,61,149.27,13.08,0.01437,62,113.11,11.97,0.07544,63,75.73,12.49,0.17757,64,37.52,13.59,0.26092,65,-1.21,13.58,0.22854,66,-39.37,12,0.15265,67,-78.45,8.66,0.0715,68,-116.44,4,0.019,8,62,149.6,8.2,0.01759,63,112.31,8.97,0.07906,64,74.34,11.13,0.18687,65,35.79,12.65,0.23527,66,-2.76,12.56,0.22613,67,-41.67,10.8,0.16104,68,-79.94,7.61,0.07616,69,-117.57,4.2,0.01789,8,63,151.93,2.79,0.01987,64,114.41,6.11,0.08485,65,76.31,9.3,0.17064,66,37.59,10.85,0.22951,67,-0.86,10.84,0.23296,68,-39.19,9.29,0.17147,69,-77.01,7.05,0.07189,70,-114.31,5.7,0.01881,8,64,152.61,0.28,0.02256,65,115.05,5.07,0.07808,66,76.28,8.19,0.16279,67,38.39,9.86,0.23317,68,0.12,9.89,0.24791,69,-37.81,8.8,0.16201,70,-75.2,7.9,0.07506,71,-112.52,8.72,0.01842,8,65,151.05,0.32,0.0212,66,112.31,4.9,0.07348,67,75.03,8.14,0.16238,68,36.9,9.64,0.2503,69,-1.06,9.62,0.23811,70,-38.52,9.16,0.1724,71,-75.72,9.71,0.06666,72,-111.64,12.31,0.01547,9,66,149.81,1.94,0.01921,67,113.12,6.8,0.07263,68,75.09,9.83,0.17415,69,37.06,10.93,0.23845,70,-0.49,10.92,0.24707,71,-37.57,11.2,0.14108,72,-73.62,12.91,0.04524,56,20.39,65.71,0.03194,57,3.76,65.87,0.03023,9,67,149.67,5.37,0.01874,68,111.74,9.87,0.07869,69,73.66,12.03,0.16656,70,36.03,12.46,0.24687,71,-0.92,12.47,0.18825,72,-37.12,13.34,0.0899,56,18.33,43.51,0.08784,57,-1.53,44.2,0.10455,58,-25.8,47.19,0.01859,8,68,154.79,8.64,0.01915,69,116.75,12.05,0.07256,70,79.07,12.99,0.16815,71,42.23,12.69,0.1776,72,5.78,12.56,0.10421,56,14.64,17.55,0.1517,57,-8.98,19.06,0.21382,58,-35.86,22.98,0.09282,7,69,116.48,22.85,0.01822,70,78.46,23.78,0.07467,71,41.82,23.48,0.10317,72,6.05,23.36,0.08976,56,25.34,16.18,0.16085,57,1.42,16.14,0.31021,58,-25.84,18.98,0.24312,6,70,73.68,52.02,0.01862,71,37.59,51.75,0.03759,72,3.6,51.71,0.0451,56,53.68,14.5,0.14626,57,29.2,10.34,0.34738,58,1.18,10.28,0.40506,4,72,-3.25,89.63,0.02875,56,91.84,14.43,0.1567,57,66.94,4.7,0.34271,58,38.11,0.68,0.47185,5,71,72.18,57.88,0.01681,72,38.37,57.03,0.06048,56,56.6,-7.2,0.23887,57,28.92,-11.55,0.29301,58,-1.41,-11.46,0.39082,6,70,124.42,26.18,0.01752,71,87.94,25.54,0.06996,72,52.02,24.36,0.14119,56,23.2,-11.84,0.3191,57,-4.79,-11.27,0.22583,58,-34.91,-7.62,0.2264,7,69,178.68,-9.39,0.01823,70,141.62,-7.71,0.07136,71,104.52,-8.47,0.15945,72,66.39,-10.01,0.21528,56,-11.93,-16.73,0.31738,57,-40.27,-10.97,0.13293,58,-70.15,-3.57,0.08539,8,68,147.99,-13.91,0.0175,69,111.72,-10.67,0.07422,70,74.78,-9.78,0.16153,71,37.48,-10.06,0.23482,72,-0.35,-10.06,0.22208,56,-7.42,23.79,0.21773,57,-29.89,28.46,0.056,58,-55.67,34.54,0.01612,8,67,146.18,-16.02,0.01862,68,110.57,-11.61,0.0709,69,74.18,-9.46,0.16798,70,37.24,-9.02,0.23549,71,-0.14,-9.02,0.23753,72,-37.67,-8.15,0.1616,56,-2.99,46.24,0.09619,57,-22.22,50.02,0.01169,8,66,144.15,-18.3,0.01916,67,109.76,-13.63,0.07375,68,73.94,-10.69,0.16022,69,37.53,-9.61,0.24483,70,0.64,-9.6,0.23678,71,-36.84,-9.33,0.16757,72,-74.18,-7.62,0.07409,56,0.03,68.34,0.02362,8,65,145.14,-19.27,0.01791,66,108.59,-14.89,0.0766,67,73.58,-11.76,0.16537,68,37.6,-10.28,0.23296,69,1.21,-10.26,0.24615,70,-35.62,-10.68,0.16542,71,-73.2,-10.15,0.07538,72,-110.37,-7.6,0.02022,8,64,144.32,-18.06,0.02019,65,108.85,-13.57,0.07057,66,72.17,-10.66,0.17233,67,36.43,-9.12,0.23764,68,0.21,-9.13,0.23388,69,-36.22,-10.2,0.17193,70,-73.01,-11.06,0.07395,71,-110.69,-10.26,0.01952,8,63,145.02,-16.9,0.02073,64,109.04,-13.77,0.07687,65,73.19,-10.75,0.15799,66,36.67,-9.28,0.24887,67,0.54,-9.28,0.23689,68,-35.61,-10.73,0.16297,69,-71.86,-12.84,0.07685,70,-108.52,-14.13,0.01881,8,62,146.77,-16.9,0.02051,63,109.94,-16.15,0.07872,64,73.94,-14.03,0.17005,65,38.22,-12.47,0.22644,66,2.35,-12.4,0.24885,67,-33.65,-13.88,0.16315,68,-69.25,-16.69,0.07274,69,-104.99,-19.77,0.01954,8,61,146.97,-16.84,0.02227,62,110.01,-17.91,0.07631,63,73.19,-17.41,0.17397,64,37.32,-16.35,0.23915,65,1.96,-16.31,0.22538,66,-33.02,-17.69,0.17224,67,-68.63,-20.68,0.07226,68,-103.46,-24.89,0.01841,7,61,108.93,-18.05,0.09539,62,71.7,-18.75,0.17531,63,34.86,-18.51,0.24273,64,-0.88,-18.56,0.23683,65,-35.89,-20.09,0.15531,66,-69.96,-22.99,0.07654,67,-105.2,-27.57,0.01788,7,24,-43.88,-55.37,0.03424,61,72.05,-18.69,0.23372,62,34.58,-19.03,0.26562,63,-2.27,-19.05,0.22234,64,-37.94,-20.17,0.156,65,-72.67,-23.24,0.06895,66,-105.91,-27.61,0.01913,7,3,-154.91,30.98,0.01226,24,-43.66,-33.25,0.12176,61,36.19,-21.51,0.37053,62,-1.59,-21.5,0.30756,63,-38.41,-21.76,0.12484,64,-73.83,-23.93,0.05004,65,-108.03,-28.48,0.01301,6,3,-126.26,31.94,0.05208,24,-44.31,-4.59,0.32578,61,-10.07,-26.1,0.3791,62,-48.26,-25.63,0.1807,63,-85.03,-26.22,0.04999,64,-120.07,-29.72,0.01235,5,3,-104.14,29.76,0.11345,24,-41.89,17.5,0.52751,61,-46.38,-26.74,0.27677,62,-84.81,-25.92,0.06988,63,-121.6,-26.75,0.01239,4,3,-89.1,23.21,0.19264,24,-35.18,32.47,0.68024,61,-72.13,-22.15,0.11605,62,-110.59,-21.07,0.01107,3,3,-67.29,16.67,0.39816,24,-28.41,54.21,0.57484,61,-108.85,-18.43,0.027,2,3,-40.25,19.63,0.64481,24,-31.08,81.29,0.35519,2,3,2.37,27.95,0.86374,24,-38.94,123.99,0.13626,2,3,35.4,13.8,0.96191,24,-24.44,156.87,0.03809,2,3,32.85,-9.82,0.98071,24,-0.85,154.06,0.01929,3,3,-108.53,-4.32,0.09208,24,-7.86,12.75,0.85702,61,-46.33,7.62,0.05091,2,3,-65.81,-11.11,0.36155,24,-0.62,55.4,0.63845,2,3,-33.47,-8.2,0.63047,24,-3.18,87.77,0.36953,2,3,-0.01,-3.03,0.88188,24,-7.99,121.28,0.11812,1,3,27.05,1.7,1,1,3,20.58,-6.91,1,3,3,-128.25,-38.12,0.03724,24,25.72,-7.34,0.91494,61,-21.35,43.65,0.04782,2,24,-19.42,-14.18,0.296,61,-0.14,-0.13,0.704,2,24,-33.34,-6.2,0.296,61,-9.93,-15.01,0.704,5,24,-22.34,-37,0.09481,61,37.46,0.12,0.38844,62,0.27,0.12,0.38653,63,-36.95,-0.14,0.105,64,-74.08,-2.28,0.02522,2,62,37.17,0.08,0.5,63,-0.03,0.08,0.5,2,63,37.58,-0.02,0.5,64,0.38,-0.01,0.5,2,64,37.49,0,0.5,65,0.29,0.01,0.5,2,65,37.56,-0.14,0.5,66,0.37,-0.12,0.5,2,66,37.02,-0.11,0.5,67,-0.17,-0.12,0.5,2,67,37.33,0.05,0.5,68,0.12,0.06,0.5,2,68,37.29,0.05,0.5,69,0.09,0.06,0.5,2,69,37.16,0.08,0.5,70,-0.04,0.08,0.5,2,70,37.02,0.04,0.5,71,-0.18,0.04,0.5,2,71,37.13,0.06,0.5,72,-0.06,0.06,0.5,4,72,37.08,0.11,0.17361,56,0.13,-0.06,0.38889,57,-25.9,3.75,0.32639,58,-54.31,9.55,0.11111,4,72,32.05,26.14,0.14352,56,26.33,0.09,0.35648,57,0.05,0.08,0.35648,58,-28.9,3.15,0.14352,4,72,19.97,54.33,0.11111,56,55.18,4.27,0.32639,57,29.19,0,0.38889,58,0.08,0,0.17361],"hull":44}},"front arm":{"stretchyman/front arm":{"type":"mesh","uvs":[0.03445,0.76037,0.04297,0.70138,0.06894,0.63543,0.09445,0.57765,0.13469,0.51895,0.18074,0.46645,0.23581,0.41905,0.29668,0.36706,0.35644,0.32779,0.41541,0.28546,0.47283,0.24333,0.52559,0.20373,0.55547,0.1745,0.58369,0.14465,0.61963,0.10668,0.66544,0.04594,0.72505,0.00474,0.79271,0.06115,0.78866,0.1191,0.81522,0.16438,0.87132,0.24607,1,0.37685,0.87297,0.39241,0.74717,0.35931,0.68521,0.30636,0.60013,0.34936,0.52749,0.38469,0.45124,0.42059,0.38601,0.45715,0.33443,0.49162,0.28675,0.52688,0.24328,0.56896,0.20356,0.614,0.16977,0.66053,0.15699,0.70793,0.16427,0.75108,0.34176,0.86549,0.25452,1,0.02907,0.98251,0,0.91628,0.09749,0.70387,0.11723,0.64863,0.14198,0.59398,0.17489,0.54144,0.21811,0.49203,0.27019,0.44701,0.33129,0.40637,0.39749,0.36932,0.4658,0.33426,0.53407,0.29914,0.60113,0.26302,0.66615,0.22517,0.68687,0.16737,0.70722,0.12321,0.71701,0.05182,0.73182,0.19898,0.76162,0.26627,0.82574,0.31367,0.69948,0.29524,0.68471,0.26602,0.07855,0.75978],"triangles":[18,54,17,14,15,53,54,15,16,54,16,17,53,54,18,53,15,54,25,50,24,11,12,50,21,22,20,55,18,19,55,53,18,50,59,58,23,57,22,22,57,20,24,58,23,23,56,57,23,58,56,57,56,20,24,50,58,58,59,56,59,55,56,56,19,20,56,55,19,51,52,55,52,53,55,52,14,53,59,51,55,52,13,14,51,13,52,35,37,38,38,60,35,37,35,36,60,38,39,50,51,59,50,12,51,12,13,51,25,49,50,10,11,49,49,11,50,26,48,49,48,10,49,48,9,10,26,49,25,27,47,48,47,9,48,47,8,9,27,48,26,28,46,47,46,8,47,28,47,27,46,7,8,45,7,46,45,46,29,29,46,28,45,6,7,44,45,30,44,6,45,30,45,29,44,5,6,43,5,44,43,44,31,31,44,30,43,4,5,42,43,32,42,4,43,32,43,31,3,4,42,41,3,42,41,42,33,33,42,32,2,3,41,40,41,34,34,41,33,40,2,41,40,34,35,60,1,40,60,39,0,60,40,35,0,1,60,1,2,40],"vertices":[3,51,32.88,-6.21,0.42436,50,69.76,-6.04,0.12834,59,-5.62,-5.18,0.44729,4,51,2.82,-7.85,0.42436,50,36.07,-7.83,0.27062,49,69.82,-7.07,0.19106,59,-17.5,0.33,0.11396,4,51,-31.98,-7.36,0.20499,50,-3.02,-7.52,0.27062,49,30.7,-7.57,0.31339,48,65.21,-6.34,0.211,4,50,-37.51,-6.86,0.14228,49,-3.87,-7.64,0.31339,48,30.81,-7.75,0.31767,47,65.81,-6.17,0.22666,4,49,-40.51,-5.71,0.12234,48,-6.18,-7.25,0.31767,47,28.95,-7.49,0.36224,46,63.83,-5.89,0.19776,4,48,-40.7,-5.46,0.10667,47,-5.9,-7.42,0.36224,46,29.5,-7.66,0.3351,45,64.56,-6.15,0.19599,4,47,-39.87,-5.65,0.13558,46,-4.58,-7.71,0.3351,45,30.63,-7.87,0.29944,44,64.88,-6.88,0.22988,4,46,-42.07,-7.7,0.13734,45,-6.71,-9.71,0.29944,44,28.03,-9.89,0.36649,43,61.57,-9.46,0.19672,4,45,-38.57,-9.68,0.10345,44,-3.75,-10.86,0.36649,43,30.01,-10.91,0.33463,42,62.89,-10.87,0.19542,5,44,-36.45,-12.43,0.13661,43,-2.4,-12.96,0.33463,42,30.36,-12.96,0.31586,41,67.92,-13.22,0.16663,40,109.5,-14.15,0.04626,4,43,-34.28,-15.12,0.13791,42,-1.64,-15.16,0.31586,41,32.94,-15.15,0.29384,40,71.8,-15.59,0.25239,4,42,-31.36,-17.34,0.12044,41,0.44,-17.07,0.36445,40,36.76,-17.06,0.29931,3,36.18,23.76,0.2158,4,41,-20.67,-19.32,0.19782,40,13.9,-19.02,0.3344,3,41.54,18.13,0.42379,75,-27.84,22.58,0.04399,4,41,-41.5,-21.83,0.07062,40,-8.71,-21.24,0.12827,3,47.09,12.7,0.62128,75,-21.11,18.7,0.17983,3,40,-37.48,-24.07,0.08136,3,54.15,5.79,0.40548,75,-12.56,13.76,0.51316,2,3,65.81,-3.61,0.19749,75,1.07,7.55,0.80251,2,3,72.82,-14.03,0.05601,75,10.44,-0.8,0.94399,2,3,58.52,-20.89,0.28296,75,-1.71,-11.01,0.71704,2,3,46.15,-17.54,0.6163,75,-14.53,-10.83,0.3837,3,24,8.49,156.66,0.04,3,35.54,-19.12,0.85362,75,-24.41,-14.99,0.10638,2,24,12.3,137.23,0.128,3,16.16,-23.14,0.872,2,24,23.88,104.83,0.256,3,-16.11,-35.08,0.744,2,24,5.16,105.68,0.256,3,-15.47,-16.35,0.744,4,41,-8.27,29.89,0.06461,40,33.03,29.98,0.04665,24,-10.93,116.96,0.128,3,-4.36,-0.13,0.76073,5,42,-42.4,14.79,0.14171,41,-9.59,15.14,0.25624,40,29.86,15.26,0.04665,24,-17.01,130.4,0.04,3,9.01,6.09,0.5154,5,43,-34.24,14.71,0.14311,42,-1.87,14.67,0.33193,41,34.54,14.68,0.25624,40,77.07,14.19,0.04665,3,2.42,20.2,0.22207,4,44,-31.57,14.8,0.16318,43,-0.28,14.32,0.31327,42,32.24,14.32,0.33193,41,71.67,14.05,0.19163,5,46,-53.11,17.28,0.03722,45,-25.95,14.53,0.17174,44,3.68,13.66,0.28755,43,34.95,13.71,0.31327,42,67.63,13.75,0.19022,4,46,-21.63,14.7,0.22193,45,6.27,13.52,0.32036,44,36.02,13.67,0.28755,43,67.16,14.19,0.17016,4,47,-21.94,14.71,0.18367,46,5.79,13.4,0.37159,45,34,13.58,0.32036,44,63.67,14.61,0.12437,4,48,-23.65,13.82,0.17874,47,4.58,12.54,0.33826,46,32.68,12.67,0.33437,45,61.02,14.17,0.14863,4,49,-24.52,12.52,0.18844,48,4.95,11.5,0.32364,47,33.73,11.65,0.33826,46,61.7,13.33,0.14966,4,50,-26.66,10.39,0.1746,49,4.54,9.81,0.34717,48,34.59,9.94,0.32364,47,63.66,11.56,0.15459,4,51,-26.85,8.12,0.14,50,2.26,7.98,0.36793,49,33.78,8.02,0.34717,48,64.18,9.29,0.1449,4,51,-2.26,8.6,0.30666,50,29.85,8.59,0.36793,49,61.28,9.2,0.15873,59,-10.62,15.43,0.16668,3,51,18.73,11.71,0.30666,50,53.32,11.81,0.19333,59,-1.28,13.25,0.50001,2,51,62.81,42.35,0.16666,59,31.13,29.09,0.83334,1,59,54.95,7.25,1,1,59,40.41,-22.28,1,2,51,113.19,-3.56,0.21938,59,25.2,-21.38,0.78062,2,51,0.07,-0.01,0.5,50,32.74,-0.01,0.5,2,50,0.17,-0.04,0.5,49,32.82,-0.03,0.5,2,49,0.06,-0.01,0.5,48,32.72,0,0.5,2,48,0.06,0.03,0.5,47,32.71,0.03,0.5,2,47,-0.06,0.09,0.5,46,32.56,0.08,0.5,2,46,0.24,0.01,0.5,45,32.89,0.02,0.5,2,45,0.11,-0.02,0.5,44,32.77,-0.02,0.5,2,44,-0.03,-0.02,0.5,43,32.63,-0.02,0.5,2,43,0.04,0.03,0.5,42,32.69,0.03,0.5,2,42,-0.05,0.02,0.5,41,35.62,0.02,0.5,3,41,-0.05,0.01,0.34692,40,38.27,0.01,0.31998,3,21.01,15.91,0.3331,1,40,-0.02,0,1,1,3,38.94,-0.81,1,2,3,47.83,-5.81,0.72816,75,-15.81,0.95,0.27184,1,75,0.01,0.03,1,1,3,30.71,-5.66,1,1,3,15.25,-6.65,1,2,24,2.46,124.18,0.12,3,3.01,-13.45,0.88,3,41,-18.54,14.55,0.34692,40,20.21,14.8,0.31998,3,10.96,3.54,0.3331,3,41,-25.44,8.2,0.12833,40,12.06,8.54,0.32704,3,17.73,4.23,0.54464,1,51,29.35,0,1],"hull":40}},"front arm path":{"front arm path":{"type":"path","lengths":[103.92,195.75,548.41],"vertexCount":9,"vertices":[1,54,-127.59,-218.46,1,1,40,-0.01,0,1,1,40,29.83,-11.11,1,1,54,-4.25,-39.48,1,1,54,-0.07,-0.13,1,1,54,3.11,32.19,1,1,59,-26.91,-0.12,1,1,59,-3.62,0.89,1,1,54,-93.58,192.14,1]}},"front leg path":{"front leg path":{"type":"path","lengths":[102.13,260.65,684.98],"vertexCount":9,"vertices":[1,56,-29.83,373.24,1,1,60,-0.01,0,1,1,60,49.21,-2.65,1,1,74,1.23,43.17,1,1,74,0.72,-0.06,1,1,74,0.27,-45.27,1,1,56,4.57,52.6,1,1,56,0,-0.23,1,1,56,-18.22,-194.7,1]}},"head":{"stretchyman/head":{"type":"mesh","uvs":[1,1,0,1,0,0,1,0],"triangles":[1,2,3,1,3,0],"vertices":[1,75,11.04,-65.9,1,1,75,-17.41,16.32,1,1,75,78.99,49.66,1,1,75,107.43,-32.55,1],"hull":4}}}},"animations":{"idle":{"bones":{"back hand":{"translate":[{"time":0,"x":1.79,"y":6.36,"curve":[0.37,0.63,0.708,1]},{"time":0.3333,"x":2.4,"y":7.88},{"time":2.0667,"x":1.78,"y":-0.7,"curve":[0.25,0,0.75,1]},{"time":4.4,"x":-1.21,"y":1.56,"curve":[0.528,0.18,0.789,0.46]},{"time":6.5667,"x":-4.49,"y":-9.15,"curve":[0.243,0,0.692,0.76]},{"time":8.3333,"x":1.79,"y":6.36}]},"front hand":{"translate":[{"time":0,"x":4.5,"y":-1.41,"curve":[0.37,0.63,0.709,1]},{"time":0.3333,"x":7.07,"y":-1.88},{"time":3.1,"x":-5.89,"y":2.35,"curve":[0.528,0.18,0.789,0.46]},{"time":6.6,"x":-20.54,"y":3.15,"curve":[0.243,0,0.691,0.76]},{"time":8.3333,"x":4.5,"y":-1.41}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":[0.381,0.54,0.518,0.71]},{"time":2.2333,"angle":-18.59,"curve":[0.429,0.26,0.686,0.51]},{"time":8.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.381,0.54,0.518,0.71]},{"time":3.3333,"x":13.86,"y":-26.54,"curve":[0.429,0.26,0.686,0.51]},{"time":8.3333,"x":0,"y":0}]},"spine":{"rotate":[{"time":0,"angle":-0.58,"curve":[0.337,0.27,0.655,0.59]},{"time":0.5667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":4,"angle":-9.12,"curve":[0.381,0.54,0.518,0.71]},{"time":7.0667,"angle":-1.04},{"time":8.3333,"angle":-0.58}],"translate":[{"time":0,"x":0.63,"y":-0.36,"curve":[0.265,0.34,0.567,0.64]},{"time":0.5667,"x":0,"y":0,"curve":[0.429,0.26,0.686,0.51]},{"time":3.4667,"x":10.78,"y":-5.78,"curve":[0.25,0,0.75,1]},{"time":7.5667,"x":2.1,"y":-1.21},{"time":8.3333,"x":0.63,"y":-0.36}]},"head":{"rotate":[{"time":0,"angle":1.52,"curve":[0.381,0.54,0.518,0.71]},{"time":4.7333,"angle":17.54,"curve":[0.429,0.26,0.686,0.51]},{"time":8.3333,"angle":1.52}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.381,0.54,0.518,0.71]},{"time":4.7333,"x":-3.32,"y":-0.53,"curve":[0.429,0.26,0.686,0.51]},{"time":8.3333,"x":0,"y":0}]}}}}},"tank":{"skeleton":{"hash":"BY/Z678aFJZflZ7P97rjCL+bBJU","spine":"3.6.39","width":7202.61,"height":1298.88},"bones":[{"name":"root"},{"name":"tankRoot","parent":"root","y":146.79},{"name":"tankTreads","parent":"tankRoot","y":48.35},{"name":"tankBody","parent":"tankTreads","y":10},{"name":"guntower","parent":"tankBody","x":-21.72,"y":245.48},{"name":"antennaRoot","parent":"guntower","x":164.61,"y":202.53},{"name":"antenna1","parent":"antennaRoot","length":40,"rotation":90,"y":40},{"name":"antenna2","parent":"antenna1","length":42,"x":42},{"name":"antenna3","parent":"antenna2","length":42,"x":42},{"name":"antenna4","parent":"antenna3","length":42,"x":42},{"name":"antenna5","parent":"antenna4","length":42,"x":42},{"name":"antenna6","parent":"antenna5","length":42,"x":42},{"name":"cannonConnector","parent":"guntower","x":-235.05,"y":96.07},{"name":"cannonTarget","parent":"tankRoot","x":-1486.66,"y":400.17},{"name":"cannon","parent":"cannonConnector","length":946.68,"rotation":180},{"name":"cannonTip","parent":"cannon","x":946.68},{"name":"machineGunTarget","parent":"tankRoot","x":-1474,"y":607.77},{"name":"machinegun-mount","parent":"guntower","length":90.98,"rotation":90,"x":-123.73,"y":218.33},{"name":"machinegun","parent":"machinegun-mount","length":208.95,"rotation":90,"x":91.52,"y":-1.03},{"name":"machinegun-tip","parent":"machinegun","x":210.43,"y":-12.21},{"name":"rock","parent":"root","x":-1925.2,"y":33.17},{"name":"tread","parent":"tankRoot","length":82,"rotation":180,"x":-22.9,"y":213.86,"scaleX":0.993},{"name":"tread2","parent":"tread","length":82,"x":82},{"name":"tread3","parent":"tread","length":82,"rotation":-8.91,"x":163.01,"y":-12.61},{"name":"tread4","parent":"tread","length":82,"rotation":-29.27,"x":234.55,"y":-52.43},{"name":"tread5","parent":"tread","length":82,"rotation":-45.26,"x":292.26,"y":-110.28},{"name":"tread6","parent":"tread","length":82,"rotation":-15.29,"x":371.36,"y":-131.76},{"name":"tread7","parent":"tread","length":82,"rotation":-5.49,"x":452.98,"y":-139.55},{"name":"tread8","parent":"tread","length":82,"rotation":-24.99,"x":527.31,"y":-173.95},{"name":"tread9","parent":"tread","length":82,"rotation":-5.44,"x":608.94,"y":-181.68},{"name":"tread10","parent":"tread","length":82,"rotation":48.85,"x":662.9,"y":-120.35},{"name":"tread11","parent":"tread","length":82,"rotation":97.99,"x":651.5,"y":-39.69},{"name":"tread12","parent":"tread","length":82,"rotation":113.79,"x":618.43,"y":34.83},{"name":"tread13","parent":"tread","length":82,"rotation":122.96,"x":573.82,"y":103.18},{"name":"tread14","parent":"tread","length":82,"rotation":142.01,"x":509.19,"y":153.3},{"name":"tread15","parent":"tread","length":82,"rotation":157.84,"x":433.25,"y":184.02},{"name":"tread16","parent":"tread","length":82,"rotation":157.37,"x":357.56,"y":215.37},{"name":"tread17","parent":"tread","length":82,"rotation":157.29,"x":281.92,"y":246.8},{"name":"tread18","parent":"tread","length":82,"rotation":157.19,"x":206.33,"y":278.38},{"name":"tread19","parent":"tread","length":82,"rotation":157.14,"x":130.77,"y":310.02},{"name":"tread20","parent":"tread","length":82,"rotation":157.34,"x":55.1,"y":341.41},{"name":"tread21","parent":"tread","length":82,"rotation":158.11,"x":-20.99,"y":371.77},{"name":"tread22","parent":"tread","length":82,"rotation":157.99,"x":-97.02,"y":402.28},{"name":"tread23","parent":"tread","length":82,"rotation":157.59,"x":-172.83,"y":433.33},{"name":"tread24","parent":"tread","length":82,"rotation":156.86,"x":-248.23,"y":465.34},{"name":"tread25","parent":"tread","length":82,"rotation":177.94,"x":-330.17,"y":468.27},{"name":"tread26","parent":"tread","length":82,"rotation":-169.55,"x":-410.81,"y":453.5},{"name":"tread27","parent":"tread","length":82,"rotation":-163.86,"x":-489.58,"y":430.86},{"name":"tread28","parent":"tread","length":82,"rotation":-139.13,"x":-551.59,"y":377.57},{"name":"tread29","parent":"tread","length":82,"rotation":-89.04,"x":-550.21,"y":296.14},{"name":"tread30","parent":"tread","length":82,"rotation":-38.99,"x":-486.48,"y":244.89},{"name":"tread31","parent":"tread","length":82,"rotation":-20.04,"x":-409.45,"y":216.98},{"name":"tread32","parent":"tread","length":82,"rotation":-46.24,"x":-352.74,"y":158.15},{"name":"tread33","parent":"tread","length":82,"rotation":-27.95,"x":-280.3,"y":119.98},{"name":"tread34","parent":"tread","length":82,"rotation":10.46,"x":-199.66,"y":134.77},{"name":"tread35","parent":"tread","length":82,"rotation":-17.9,"x":-121.63,"y":109.73},{"name":"tread36","parent":"tread","length":82,"rotation":-36.82,"x":-55.99,"y":60.92},{"name":"wheel-midCenter","parent":"tankRoot","y":-66.21},{"name":"treadCollider1","parent":"wheel-midCenter","x":-329.58,"y":-85.44},{"name":"treadCollider2","parent":"wheel-midCenter","x":-165.95,"y":-85.44},{"name":"treadCollider3","parent":"wheel-midCenter","y":-85.44},{"name":"treadCollider4","parent":"wheel-midCenter","x":163.56,"y":-85.44},{"name":"treadCollider5","parent":"wheel-midCenter","x":329.12,"y":-85.44},{"name":"treadGravity1","parent":"tankRoot","rotation":180,"x":-175.35,"y":149.31},{"name":"treadGravity2","parent":"tankRoot","rotation":180,"x":177.89,"y":144.78},{"name":"wheel-bigRoot1","parent":"tankTreads","x":-549.6,"y":14.4},{"name":"wheel-big1","parent":"wheel-bigRoot1","x":-0.02},{"name":"wheel-bigRoot2","parent":"tankTreads","x":547.34,"y":14.4},{"name":"wheel-big2","parent":"wheel-bigRoot2"},{"name":"wheel-midRoot1","parent":"wheel-midCenter","x":-410.57},{"name":"wheel-mid1","parent":"wheel-midRoot1"},{"name":"wheel-midRoot2","parent":"wheel-midCenter","x":-246.95},{"name":"wheel-mid2","parent":"wheel-midRoot2"},{"name":"wheel-midRoot3","parent":"wheel-midCenter","x":-82.73},{"name":"wheel-mid3","parent":"wheel-midRoot3"},{"name":"wheel-midRoot4","parent":"wheel-midCenter","x":80.89},{"name":"wheel-mid4","parent":"wheel-midRoot4"},{"name":"wheel-midRoot5","parent":"wheel-midCenter","x":244.51},{"name":"wheel-mid5","parent":"wheel-midRoot5"},{"name":"wheel-midRoot6","parent":"wheel-midCenter","x":408.74},{"name":"wheel-mid6","parent":"wheel-midRoot6"},{"name":"wheel-smallRoot1","parent":"tankTreads","x":-337.39,"y":109.43},{"name":"wheel-small1","parent":"wheel-smallRoot1"},{"name":"wheel-smallRoot2","parent":"tankTreads","x":0.09,"y":109.43},{"name":"wheel-small2","parent":"wheel-smallRoot2"},{"name":"wheel-smallRoot3","parent":"tankTreads","x":334.69,"y":109.43},{"name":"wheel-small3","parent":"wheel-smallRoot3"}],"slots":[{"name":"rock","bone":"rock","attachment":"tank/rock"},{"name":"ground","bone":"root","attachment":"tank/ground"},{"name":"ground2","bone":"root","attachment":"tank/ground"},{"name":"ground3","bone":"root","attachment":"tank/ground"},{"name":"ground4","bone":"root","attachment":"tank/ground"},{"name":"ground5","bone":"root","attachment":"tank/ground"},{"name":"ground6","bone":"root","attachment":"tank/ground"},{"name":"ground7","bone":"root","attachment":"tank/ground"},{"name":"tankBody-shadow","bone":"tankBody","color":"ffffffb9","attachment":"tank/tankBottom-shadow"},{"name":"bottom","bone":"tankBody","attachment":"tank/tankBottom"},{"name":"tread-inside1","bone":"tread","attachment":"tank/tread-inside"},{"name":"tread-inside53","bone":"tread27","attachment":"tank/tread-inside"},{"name":"tread-inside27","bone":"tread14","attachment":"tank/tread-inside"},{"name":"tread-inside3","bone":"tread2","attachment":"tank/tread-inside"},{"name":"tread-inside55","bone":"tread28","attachment":"tank/tread-inside"},{"name":"tread-inside29","bone":"tread15","attachment":"tank/tread-inside"},{"name":"tread-inside5","bone":"tread3","attachment":"tank/tread-inside"},{"name":"tread-inside57","bone":"tread29","attachment":"tank/tread-inside"},{"name":"tread-inside31","bone":"tread16","attachment":"tank/tread-inside"},{"name":"tread-inside7","bone":"tread4","attachment":"tank/tread-inside"},{"name":"tread-inside59","bone":"tread30","attachment":"tank/tread-inside"},{"name":"tread-inside33","bone":"tread17","attachment":"tank/tread-inside"},{"name":"tread-inside9","bone":"tread5","attachment":"tank/tread-inside"},{"name":"tread-inside61","bone":"tread31","attachment":"tank/tread-inside"},{"name":"tread-inside35","bone":"tread18","attachment":"tank/tread-inside"},{"name":"tread-inside11","bone":"tread6","attachment":"tank/tread-inside"},{"name":"tread-inside63","bone":"tread32","attachment":"tank/tread-inside"},{"name":"tread-inside37","bone":"tread19","attachment":"tank/tread-inside"},{"name":"tread-inside13","bone":"tread7","attachment":"tank/tread-inside"},{"name":"tread-inside65","bone":"tread33","attachment":"tank/tread-inside"},{"name":"tread-inside39","bone":"tread20","attachment":"tank/tread-inside"},{"name":"tread-inside15","bone":"tread8","attachment":"tank/tread-inside"},{"name":"tread-inside67","bone":"tread34","attachment":"tank/tread-inside"},{"name":"tread-inside69","bone":"tread35","attachment":"tank/tread-inside"},{"name":"tread-inside71","bone":"tread36","attachment":"tank/tread-inside"},{"name":"tread-inside41","bone":"tread21","attachment":"tank/tread-inside"},{"name":"tread-inside17","bone":"tread9","attachment":"tank/tread-inside"},{"name":"tread-inside43","bone":"tread22","attachment":"tank/tread-inside"},{"name":"tread-inside19","bone":"tread10","attachment":"tank/tread-inside"},{"name":"tread-inside45","bone":"tread23","attachment":"tank/tread-inside"},{"name":"tread-inside21","bone":"tread11","attachment":"tank/tread-inside"},{"name":"tread-inside47","bone":"tread24","attachment":"tank/tread-inside"},{"name":"tread-inside23","bone":"tread12","attachment":"tank/tread-inside"},{"name":"tread-inside49","bone":"tread25","attachment":"tank/tread-inside"},{"name":"tread-inside25","bone":"tread13","attachment":"tank/tread-inside"},{"name":"tread-inside51","bone":"tread26","attachment":"tank/tread-inside"},{"name":"tread-inside2","bone":"tread","attachment":"tank/tread-inside"},{"name":"tread-inside54","bone":"tread27","attachment":"tank/tread-inside"},{"name":"tread-inside28","bone":"tread14","attachment":"tank/tread-inside"},{"name":"tread-inside4","bone":"tread2","attachment":"tank/tread-inside"},{"name":"tread-inside56","bone":"tread28","attachment":"tank/tread-inside"},{"name":"tread-inside30","bone":"tread15","attachment":"tank/tread-inside"},{"name":"tread-inside6","bone":"tread3","attachment":"tank/tread-inside"},{"name":"tread-inside58","bone":"tread29","attachment":"tank/tread-inside"},{"name":"tread-inside32","bone":"tread16","attachment":"tank/tread-inside"},{"name":"tread-inside8","bone":"tread4","attachment":"tank/tread-inside"},{"name":"tread-inside60","bone":"tread30","attachment":"tank/tread-inside"},{"name":"tread-inside34","bone":"tread17","attachment":"tank/tread-inside"},{"name":"tread-inside10","bone":"tread5","attachment":"tank/tread-inside"},{"name":"tread-inside62","bone":"tread31","attachment":"tank/tread-inside"},{"name":"tread-inside36","bone":"tread18","attachment":"tank/tread-inside"},{"name":"tread-inside12","bone":"tread6","attachment":"tank/tread-inside"},{"name":"tread-inside64","bone":"tread32","attachment":"tank/tread-inside"},{"name":"tread-inside38","bone":"tread19","attachment":"tank/tread-inside"},{"name":"tread-inside14","bone":"tread7","attachment":"tank/tread-inside"},{"name":"tread-inside66","bone":"tread33","attachment":"tank/tread-inside"},{"name":"tread-inside40","bone":"tread20","attachment":"tank/tread-inside"},{"name":"tread-inside16","bone":"tread8","attachment":"tank/tread-inside"},{"name":"tread-inside68","bone":"tread34","attachment":"tank/tread-inside"},{"name":"tread-inside70","bone":"tread35","attachment":"tank/tread-inside"},{"name":"tread-inside72","bone":"tread36","attachment":"tank/tread-inside"},{"name":"tread-inside42","bone":"tread21","attachment":"tank/tread-inside"},{"name":"tread-inside18","bone":"tread9","attachment":"tank/tread-inside"},{"name":"tread-inside44","bone":"tread22","attachment":"tank/tread-inside"},{"name":"tread-inside20","bone":"tread10","attachment":"tank/tread-inside"},{"name":"tread-inside46","bone":"tread23","attachment":"tank/tread-inside"},{"name":"tread-inside22","bone":"tread11","attachment":"tank/tread-inside"},{"name":"tread-inside48","bone":"tread24","attachment":"tank/tread-inside"},{"name":"tread-inside24","bone":"tread12","attachment":"tank/tread-inside"},{"name":"tread-inside50","bone":"tread25","attachment":"tank/tread-inside"},{"name":"tread-inside26","bone":"tread13","attachment":"tank/tread-inside"},{"name":"tread-inside52","bone":"tread26","attachment":"tank/tread-inside"},{"name":"wheel-big","bone":"wheel-big1","color":"dbdbdbff","attachment":"tank/wheel-big"},{"name":"wheel-big2","bone":"wheel-big2","color":"dbdbdbff","attachment":"tank/wheel-big"},{"name":"wheel-mid","bone":"wheel-mid1","attachment":"tank/wheel-mid"},{"name":"wheel-mid2","bone":"wheel-mid2","attachment":"tank/wheel-mid"},{"name":"wheel-mid3","bone":"wheel-mid3","attachment":"tank/wheel-mid"},{"name":"wheel-mid4","bone":"wheel-mid4","attachment":"tank/wheel-mid"},{"name":"wheel-mid5","bone":"wheel-mid5","attachment":"tank/wheel-mid"},{"name":"wheel-mid6","bone":"wheel-mid6","attachment":"tank/wheel-mid"},{"name":"wheel-small","bone":"wheel-small1","attachment":"tank/wheel-small"},{"name":"wheel-small2","bone":"wheel-small2","attachment":"tank/wheel-small"},{"name":"wheel-small3","bone":"wheel-small3","attachment":"tank/wheel-small"},{"name":"wheel-mid-overlay","bone":"wheel-midRoot1","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay2","bone":"wheel-midRoot2","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay3","bone":"wheel-midRoot3","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay4","bone":"wheel-midRoot4","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay5","bone":"wheel-midRoot5","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay6","bone":"wheel-midRoot6","color":"ffffffec","attachment":"tank/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-big-overlay1","bone":"wheel-bigRoot1","color":"ffffffe9","attachment":"tank/wheel-big-overlay","blend":"multiply"},{"name":"wheel-big-overlay2","bone":"wheel-bigRoot2","color":"ffffffe9","attachment":"tank/wheel-big-overlay","blend":"multiply"},{"name":"treads","bone":"tankRoot","attachment":"treads"},{"name":"tread","bone":"tread","attachment":"tank/tread"},{"name":"tread27","bone":"tread27","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread14","bone":"tread14","attachment":"tank/tread"},{"name":"tread2","bone":"tread2","attachment":"tank/tread"},{"name":"tread28","bone":"tread28","attachment":"tank/tread"},{"name":"tread15","bone":"tread15","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread3","bone":"tread3","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread29","bone":"tread29","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread16","bone":"tread16","attachment":"tank/tread"},{"name":"tread4","bone":"tread4","attachment":"tank/tread"},{"name":"tread30","bone":"tread30","attachment":"tank/tread"},{"name":"tread17","bone":"tread17","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread5","bone":"tread5","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread31","bone":"tread31","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread18","bone":"tread18","attachment":"tank/tread"},{"name":"tread6","bone":"tread6","attachment":"tank/tread"},{"name":"tread32","bone":"tread32","attachment":"tank/tread"},{"name":"tread19","bone":"tread19","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread7","bone":"tread7","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread33","bone":"tread33","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread20","bone":"tread20","attachment":"tank/tread"},{"name":"tread8","bone":"tread8","attachment":"tank/tread"},{"name":"tread34","bone":"tread34","attachment":"tank/tread"},{"name":"tread35","bone":"tread35","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread36","bone":"tread36","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread21","bone":"tread21","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread9","bone":"tread9","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread22","bone":"tread22","attachment":"tank/tread"},{"name":"tread10","bone":"tread10","attachment":"tank/tread"},{"name":"tread23","bone":"tread23","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread11","bone":"tread11","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread24","bone":"tread24","attachment":"tank/tread"},{"name":"tread12","bone":"tread12","attachment":"tank/tread"},{"name":"tread25","bone":"tread25","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread13","bone":"tread13","color":"adc9b8ff","attachment":"tank/tread"},{"name":"tread26","bone":"tread26","attachment":"tank/tread"},{"name":"machinegun","bone":"machinegun","attachment":"tank/machinegun"},{"name":"machinegun-mount","bone":"machinegun-mount","attachment":"tank/machinegun-mount"},{"name":"tankTop","bone":"tankBody","attachment":"tank/tankTop"},{"name":"guntower","bone":"guntower","attachment":"tank/guntower"},{"name":"cannon","bone":"cannon","attachment":"tank/cannon"},{"name":"cannonConnector","bone":"cannonConnector","attachment":"tank/cannonConnector"},{"name":"antenna","bone":"antennaRoot","attachment":"tank/antenna"}],"ik":[{"name":"cannonTarget","order":0,"bones":["cannon"],"target":"cannonTarget"},{"name":"machineGunTarget","order":1,"bones":["machinegun"],"target":"machineGunTarget","mix":0}],"transform":[{"name":"wheel-big","order":8,"bones":["wheel-big2"],"target":"wheel-big1","rotation":65.6,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel-mid1","order":3,"bones":["wheel-mid2","wheel-mid4"],"target":"wheel-mid1","rotation":93,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel-mid2","order":4,"bones":["wheel-mid3","wheel-mid5"],"target":"wheel-mid1","rotation":-89,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel-mid3","order":5,"bones":["wheel-mid6"],"target":"wheel-mid1","rotation":-152.6,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel-small1","order":6,"bones":["wheel-small2"],"target":"wheel-small1","rotation":87,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel-small2","order":7,"bones":["wheel-small3"],"target":"wheel-small1","rotation":54.9,"translateMix":0,"scaleMix":0,"shearMix":0}],"path":[{"name":"treads","order":2,"bones":["tread","tread2","tread3","tread4","tread5","tread6","tread7","tread8","tread9","tread10","tread11","tread12","tread13","tread14","tread15","tread16","tread17","tread18","tread19","tread20","tread21","tread22","tread23","tread24","tread25","tread26","tread27","tread28","tread29","tread30","tread31","tread32","tread33","tread34","tread35","tread36"],"target":"treads","rotateMode":"chain"}],"skins":{"default":{"antenna":{"tank/antenna":{"type":"mesh","uvs":[0.64286,0.07876,0.65354,0.1535,0.66325,0.22138,0.67367,0.29433,0.68383,0.36543,0.6936,0.43374,0.70311,0.5003,0.71311,0.57031,0.72327,0.64139,0.73406,0.71689,0.74441,0.7893,0.75614,0.87141,0.76905,0.94311,1,0.94311,1,1,0,1,0,0.94311,0.20106,0.94311,0.20106,0.87094,0.21461,0.78847,0.22651,0.71607,0.23886,0.64099,0.25036,0.57105,0.26206,0.49983,0.27306,0.43291,0.2843,0.36454,0.29593,0.29382,0.308,0.22038,0.319,0.15345,0.33142,0.07796,0.34423,0,0.63161,0],"triangles":[30,31,0,29,30,0,29,0,1,28,29,1,28,1,2,27,28,2,27,2,3,26,3,4,25,26,4,25,4,5,26,27,3,24,5,6,23,24,6,7,23,6,24,25,5,22,7,8,21,22,8,21,8,9,7,22,23,20,9,10,19,20,10,20,21,9,19,10,11,18,19,11,17,18,11,17,11,12,15,16,17,12,13,14,15,17,12,14,15,12],"vertices":[2,10,65.38,-3.14,0.3125,11,23.38,-3.14,0.6875,2,10,42.73,-3.38,0.66667,11,0.73,-3.38,0.33333,2,9,64.17,-3.59,0.33333,10,22.17,-3.59,0.66667,2,9,42.06,-3.82,0.66667,10,0.06,-3.82,0.33333,2,8,62.52,-4.04,0.33333,9,20.52,-4.04,0.66667,2,8,41.82,-4.26,0.66667,9,-0.18,-4.26,0.33333,2,7,63.65,-4.47,0.33333,8,21.65,-4.47,0.66667,2,7,42.44,-4.69,0.66667,8,0.44,-4.69,0.33333,2,6,62.9,-4.91,0.33333,7,20.9,-4.91,0.66667,2,6,40.03,-5.15,0.66667,7,-1.97,-5.15,0.33333,2,5,5.38,58.09,0.4,6,18.09,-5.38,0.6,1,5,5.64,33.21,1,1,5,5.92,11.48,1,1,5,11,11.48,1,1,5,11,-5.76,1,1,5,-11,-5.76,1,1,5,-11,11.48,1,1,5,-6.58,11.48,1,1,5,-6.58,33.35,1,2,5,-6.28,58.34,0.4,6,18.34,6.28,0.6,2,6,40.27,6.02,0.66667,7,-1.73,6.02,0.33333,2,6,63.03,5.75,0.33333,7,21.03,5.75,0.66667,2,7,42.22,5.49,0.66667,8,0.22,5.49,0.33333,2,7,63.8,5.23,0.33333,8,21.8,5.23,0.66667,2,8,42.07,4.99,0.66667,9,0.07,4.99,0.33333,2,8,62.79,4.75,0.33333,9,20.79,4.75,0.66667,2,9,42.22,4.49,0.66667,10,0.22,4.49,0.33333,2,9,64.47,4.22,0.33333,10,22.47,4.22,0.66667,2,10,42.75,3.98,0.66667,11,0.75,3.98,0.33333,2,10,65.62,3.71,0.3125,11,23.62,3.71,0.6875,1,11,47.24,3.43,1,1,11,47.24,-2.9,1],"hull":32}},"bottom":{"tank/tankBottom":{"x":-16.67,"y":9.89,"width":1285,"height":276}},"cannon":{"tank/cannon":{"x":481.95,"y":-0.03,"rotation":180,"width":931,"height":58}},"cannonConnector":{"tank/cannonConnector":{"type":"mesh","uvs":[1,0.03237,1,0.10603,0.90988,0.32859,0.81975,0.55116,0.72963,0.77373,0.6395,0.9963,0.42157,0.9963,0.20364,0.9963,0,0.85434,0,0.69902,0.02268,0.52884,0,0.31444,0.21602,0.12998,0.43368,0,0.63547,0.0037,0.48408,0.77059,0.31496,0.52497,0.64133,0.19648,0.21516,0.76766,0.58346,0.56471,0.68444,0.40146,0.46758,0.36649,0.28935,0.34604],"triangles":[21,22,12,11,12,22,17,21,13,17,13,14,21,12,13,21,17,20,16,22,21,10,11,22,10,22,16,19,21,20,16,21,19,18,10,16,9,10,18,15,16,19,18,16,15,8,9,18,7,8,18,6,18,15,7,18,6,14,0,1,17,14,1,2,17,1,20,17,2,3,20,2,19,20,3,4,19,3,15,19,4,5,15,4,6,15,5],"vertices":[1,12,35.91,69.08,1,1,12,35.91,59.14,1,1,12,25.82,29.09,1,1,12,15.72,-0.95,1,1,12,5.63,-31,1,1,12,-4.46,-61.05,1,2,12,-28.87,-61.05,0.33333,14,28.87,61.03,0.66667,1,14,53.28,61.02,1,1,14,76.09,41.84,1,1,14,71.17,21.63,1,1,14,72.83,-1.62,1,1,14,70.38,-29.12,1,1,14,50.67,-56.14,1,2,12,-28.43,74.38,0.41,14,28.43,-74.4,0.59,2,12,-4.92,72.95,0.52,14,4.92,-72.95,0.48,2,12,-21.87,-30.58,0.49,14,21.87,30.57,0.51,1,14,40.81,-2.6,1,2,12,-4.26,46.93,0.49,14,4.26,-46.93,0.51,1,14,51.99,30.15,1,2,12,-10.74,-2.78,0.49,14,10.74,2.78,0.51,2,12,0.57,19.25,0.49,14,-0.57,-19.25,0.51,1,14,23.72,-23.99,1,1,14,43.68,-26.76,1],"hull":15}},"ground":{"tank/ground":{"x":837.96,"y":-172,"width":1024,"height":353}},"ground2":{"tank/ground":{"x":-179.89,"y":-172,"width":1024,"height":353}},"ground3":{"tank/ground":{"x":-1213.48,"y":-172,"scaleX":1.035,"width":1024,"height":353}},"ground4":{"tank/ground":{"x":-2268.51,"y":-172,"scaleX":1.04,"width":1024,"height":353}},"ground5":{"tank/ground":{"x":-3306.54,"y":-172,"width":1024,"height":353}},"ground6":{"tank/ground":{"x":-4322.71,"y":-172,"width":1024,"height":353}},"ground7":{"tank/ground":{"x":-5340.65,"y":-172,"width":1024,"height":353}},"guntower":{"tank/guntower":{"x":77.22,"y":122.59,"width":730,"height":289}},"machinegun":{"tank/machinegun":{"x":44.85,"y":-5.72,"rotation":-180,"width":331,"height":57}},"machinegun-mount":{"tank/machinegun-mount":{"x":47.42,"y":-1.54,"rotation":-90,"width":72,"height":96}},"rock":{"tank/rock":{"x":25.24,"y":27.35,"width":580,"height":127}},"tankBody-shadow":{"tank/tankBottom-shadow":{"x":-11.44,"y":-42.89,"width":1291,"height":341}},"tankTop":{"tank/tankTop":{"x":6.8,"y":168.71,"width":1407,"height":222}},"tread":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread-inside1":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside10":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside11":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside12":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside13":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside14":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside15":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside16":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside17":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside18":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside19":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside2":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside20":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside21":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside22":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside23":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside24":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside25":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside26":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside27":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside28":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside29":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside3":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside30":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside31":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside32":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside33":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside34":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside35":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside36":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside37":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside38":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside39":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside4":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside40":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside41":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside42":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside43":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside44":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside45":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside46":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside47":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside48":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside49":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside5":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside50":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside51":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside52":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside53":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside54":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside55":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside56":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside57":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside58":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside59":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside6":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside60":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside61":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside62":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside63":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside64":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside65":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside66":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside67":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside68":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside69":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside7":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside70":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside71":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside72":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside8":{"tank/tread-inside":{"x":20.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread-inside9":{"tank/tread-inside":{"x":60.1,"y":12.56,"rotation":-180,"width":25,"height":28}},"tread10":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread11":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread12":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread13":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread14":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread15":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread16":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread17":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread18":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread19":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread2":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread20":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread21":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread22":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread23":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread24":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread25":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread26":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread27":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread28":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread29":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread3":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread30":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread31":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread32":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread33":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread34":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread35":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread36":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread4":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread5":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread6":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread7":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread8":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"tread9":{"tank/tread":{"x":45.47,"y":-8.28,"rotation":-180,"width":96,"height":30}},"treads":{"treads":{"type":"path","closed":true,"lengths":[185.21,354.53,478.3,608.52,786,1058.49,1138.97,1223.96,1303.87,1388.23,1471.11,1551.64,1633.55,1713.27,1799.89,1882.28,2164.2,2326.85,2444.07,2584.91,2754.15,2931.25],"vertexCount":66,"vertices":[1,83,11.23,41.87,1,1,83,0.79,41.95,1,1,83,-34.72,42.24,1,1,63,-104.22,0.41,1,1,63,0.07,0.55,1,1,63,68.8,0.65,1,1,81,20.5,43.47,1,1,81,1.14,40.82,1,1,81,-27.38,36.85,1,1,65,147.07,105.01,1,1,65,96.21,96.63,1,1,65,43.87,87.72,1,1,65,16.18,103.35,1,1,65,-33.67,94.21,1,1,65,-99.36,81.25,1,1,65,-122.05,-1.7,1,1,65,-83.58,-47.93,1,1,65,-33.53,-109.37,1,1,69,-83.57,-66.1,1,1,69,-2.17,-67.9,1,2,69,56.68,-41.49,0.68,58,-24.31,-41.49,0.32,1,58,-26.59,16.7,1,1,58,-2.69,16.7,1,1,58,13.52,16.7,1,2,71,-52.42,-46.51,0.744,58,30.21,-46.52,0.256,1,71,-0.32,-68.92,1,2,71,52.09,-44.73,0.712,59,-28.91,-44.73,0.288,1,59,-22.81,16.24,1,1,59,-1.42,16.24,1,1,59,20.48,16.24,1,2,73,-47.21,-47.46,0.744,59,36.01,-47.46,0.256,1,73,-0.29,-69.66,1,2,73,45.24,-47.26,0.736,60,-37.49,-47.26,0.264,1,60,-23.76,15.28,1,1,60,-0.14,15.28,1,1,60,24.45,15.28,1,2,75,-47.37,-48.7,0.744,60,33.53,-48.7,0.256,1,75,-0.5,-70.4,1,2,75,49.09,-48.34,0.744,61,-33.58,-48.34,0.256,1,61,-20.89,15.84,1,1,61,-1.26,15.84,1,1,61,15.78,15.84,1,2,77,-52.5,-48.21,0.76,61,28.45,-48.22,0.24,1,77,-2.5,-68.92,1,2,77,55.72,-47.82,0.752,62,-28.88,-47.83,0.248,1,62,-21.64,16.7,1,1,62,-0.48,16.7,1,1,62,20.74,16.7,1,2,79,-53.65,-48.9,0.76,62,25.97,-48.9,0.24,1,79,2.28,-69.66,1,1,79,44.95,-69.74,1,1,67,76.03,-85.61,1,1,67,93.58,-42.24,1,1,67,118.67,19.75,1,1,67,78.59,76.62,1,1,67,37.27,95.07,1,1,67,31.45,97.67,1,1,67,-15.16,87.48,1,1,67,-79.8,92.52,1,1,67,-119.06,95.58,1,1,85,47.07,42.29,1,1,85,0.25,42.75,1,1,85,-29.64,43.29,1,1,64,-86.65,1.35,1,1,64,0.49,0.26,1,1,64,92.42,-0.9,1]}},"wheel-big":{"tank/wheel-big":{"width":191,"height":191}},"wheel-big-overlay1":{"tank/wheel-big-overlay":{"width":186,"height":186}},"wheel-big-overlay2":{"tank/wheel-big-overlay":{"width":186,"height":186}},"wheel-big2":{"tank/wheel-big":{"width":191,"height":191}},"wheel-mid":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-mid-overlay":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay2":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay3":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay4":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay5":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay6":{"tank/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid2":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-mid3":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-mid4":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-mid5":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-mid6":{"tank/wheel-mid":{"width":136,"height":136}},"wheel-small":{"tank/wheel-small":{"width":71,"height":71}},"wheel-small2":{"tank/wheel-small":{"width":71,"height":71}},"wheel-small3":{"tank/wheel-small":{"width":71,"height":71}}}},"animations":{"drive":{"slots":{"tread18":{"color":[{"time":6.5,"color":"ffffffff"},{"time":7.1,"color":"adc9b8ff"}]},"tread19":{"color":[{"time":6.5,"color":"adc9b8ff"},{"time":7.1,"color":"ffffffff"}]}},"bones":{"tankRoot":{"rotate":[{"time":2.8,"angle":0},{"time":3.1667,"angle":-10.36},{"time":3.4667,"angle":-15.91},{"time":3.5667,"angle":-10.15},{"time":3.8667,"angle":14.09},{"time":4.0667,"angle":8.7},{"time":4.5,"angle":3.25},{"time":4.7333,"angle":-3.19},{"time":5.0333,"angle":0}],"translate":[{"time":0.6333,"x":0,"y":0,"curve":[0.57,0.08,0.705,0.61]},{"time":2.4667,"x":-1149.59,"y":-0.54},{"time":2.6,"x":-1226.23,"y":-0.57},{"time":2.8,"x":-1398.67,"y":-0.65},{"time":3,"x":-1501.67,"y":13.68},{"time":3.1667,"x":-1656.17,"y":35.18},{"time":3.4333,"x":-1861.87,"y":73.29},{"time":3.5,"x":-1907.58,"y":74.59},{"time":3.6333,"x":-1999,"y":75.41},{"time":3.7667,"x":-2117.81,"y":43.56},{"time":3.8333,"x":-2150.21,"y":34.88},{"time":4,"x":-2312.81,"y":34.73},{"time":4.0667,"x":-2352.57,"y":18.21,"curve":[0.253,0.18,0.648,0.52]},{"time":4.5333,"x":-2617.35,"y":-1.61,"curve":[0.359,0.3,0.701,0.63]},{"time":4.7333,"x":-2782.66,"y":-13.99},{"time":4.9333,"x":-2858,"y":-2.62},{"time":6.7667,"x":-4062.06,"y":0,"curve":[0.467,0.75,0.531,1]},{"time":7.5,"x":-4143.54,"y":0}]},"wheel-midRoot4":{"translate":[{"time":2.6,"x":0,"y":0},{"time":3.1333,"x":0,"y":-7.01},{"time":3.2,"x":0,"y":0},{"time":3.2333,"x":0,"y":-15.24},{"time":3.3667,"x":0,"y":18.85},{"time":3.5333,"x":0,"y":35.99},{"time":3.7,"x":0,"y":48.57},{"time":3.8,"x":-1.35,"y":51.87},{"time":3.8667,"x":0,"y":47.48},{"time":4,"x":0,"y":0},{"time":4.7333,"x":0,"y":18.67},{"time":5.0333,"x":0,"y":0},{"time":7.3,"x":0,"y":0}]},"wheel-midRoot5":{"translate":[{"time":0,"x":0,"y":0},{"time":2.6,"x":0,"y":-2.78},{"time":3.1333,"x":0,"y":1.79},{"time":3.2,"x":0,"y":0.46},{"time":3.2333,"x":0,"y":-7.38},{"time":3.3667,"x":0,"y":0},{"time":3.5333,"x":0,"y":7.26},{"time":3.6,"x":0,"y":10.72},{"time":3.7,"x":0,"y":27.18},{"time":3.8,"x":1.86,"y":22.01},{"time":3.8667,"x":0,"y":21.42},{"time":3.9333,"x":0,"y":41.5},{"time":4,"x":0,"y":18.12},{"time":4.0667,"x":0,"y":23.79},{"time":4.2,"x":0,"y":-13.86},{"time":4.7333,"x":0,"y":25.33},{"time":5.0333,"x":0,"y":0},{"time":7.3,"x":0,"y":0}]},"treadCollider4":{"translate":[{"time":2.6,"x":0,"y":0},{"time":3.1333,"x":0,"y":-5.57},{"time":3.2,"x":0,"y":4.81},{"time":3.2333,"x":0,"y":0},{"time":3.3667,"x":0,"y":3.71},{"time":3.5333,"x":0,"y":42.06},{"time":3.6,"x":0,"y":38.49},{"time":3.7,"x":0,"y":55.21},{"time":3.8,"x":-1.35,"y":46.96},{"time":3.8667,"x":0,"y":46.59},{"time":3.9333,"x":0,"y":20.77},{"time":4,"x":0,"y":0.44},{"time":4.2,"x":0,"y":0},{"time":4.7333,"x":0,"y":22},{"time":5.0333,"x":0,"y":0}]},"treadCollider3":{"translate":[{"time":3.1333,"x":0,"y":0},{"time":3.2,"x":0,"y":2.28},{"time":3.2333,"x":0,"y":4.73},{"time":3.3667,"x":0,"y":31.54},{"time":3.5333,"x":0,"y":46.61},{"time":3.7,"x":0,"y":44.32},{"time":3.8,"x":-1.35,"y":21.94},{"time":3.8667,"x":0,"y":8.69},{"time":4.4,"x":0,"y":0.44},{"time":4.7333,"x":0,"y":14.96},{"time":5.0333,"x":0,"y":0}]},"wheel-midRoot3":{"translate":[{"time":2.6,"x":0,"y":0},{"time":3.1333,"x":0,"y":-4.32},{"time":3.2,"x":0,"y":12.52},{"time":3.2333,"x":0,"y":20.78},{"time":3.3667,"x":0,"y":23.09},{"time":3.5333,"x":0,"y":2.75},{"time":3.7,"x":0,"y":0},{"time":3.8,"x":-0.68,"y":0},{"time":3.8667,"x":0,"y":-1.32},{"time":4,"x":0,"y":0},{"time":4.4,"x":0,"y":-1.07},{"time":4.7333,"x":0,"y":7.91},{"time":5.0333,"x":0,"y":0},{"time":5.3333,"x":0,"y":0}]},"treadCollider5":{"translate":[{"time":2.6,"x":0,"y":0},{"time":2.8,"x":0,"y":-0.59},{"time":3.1333,"x":0,"y":27.54},{"time":3.2,"x":0,"y":29.39},{"time":3.2333,"x":0,"y":30.34},{"time":3.3667,"x":0,"y":7.54},{"time":3.5333,"x":0,"y":0.44},{"time":3.5667,"x":0,"y":27.5},{"time":3.6,"x":0,"y":19.7},{"time":3.7,"x":0,"y":0},{"time":3.8,"x":-1.35,"y":0},{"time":3.8667,"x":0,"y":13.87},{"time":4,"x":0,"y":25.45},{"time":4.0667,"x":0,"y":40.61},{"time":4.2,"x":7.01,"y":32.82},{"time":4.4,"x":5.77,"y":0},{"time":4.7333,"x":4.74,"y":33.06},{"time":5.0333,"x":4.12,"y":0},{"time":5.3333,"x":0,"y":0}]},"wheel-midRoot6":{"translate":[{"time":0,"x":0,"y":0},{"time":2.6,"x":0,"y":-7.23},{"time":2.8,"x":0,"y":-1.89},{"time":3.1333,"x":0,"y":20.24},{"time":3.2,"x":0,"y":35.64},{"time":3.2333,"x":0,"y":33.63},{"time":3.3667,"x":0,"y":33.79},{"time":3.5333,"x":0,"y":8.67},{"time":3.5667,"x":0,"y":38.25},{"time":3.7,"x":0,"y":0},{"time":3.8,"x":-1.35,"y":0},{"time":4,"x":-1.2,"y":0},{"time":4.0667,"x":-1.14,"y":31.76},{"time":4.2,"x":-1.04,"y":50.46},{"time":4.4,"x":-0.86,"y":31.6},{"time":4.7333,"x":-0.71,"y":31.87},{"time":5.0333,"x":-0.61,"y":0},{"time":5.3333,"x":0,"y":0}]},"wheel-midRoot1":{"translate":[{"time":2.5333,"x":0,"y":0},{"time":2.8,"x":0,"y":88.82},{"time":2.9333,"x":0,"y":86.84},{"time":3.1333,"x":0,"y":19.7},{"time":3.2,"x":0,"y":0,"curve":"stepped"},{"time":3.2333,"x":0,"y":0},{"time":3.5667,"x":-0.07,"y":12.71},{"time":3.7,"x":18.01,"y":0},{"time":3.7667,"x":-0.68,"y":0},{"time":3.8,"x":0,"y":21.06},{"time":3.8667,"x":0,"y":80.49},{"time":4,"x":0,"y":24.11},{"time":4.0667,"x":0,"y":40.34},{"time":4.2,"x":0,"y":31.4},{"time":4.4,"x":0,"y":15.24},{"time":4.7,"x":0,"y":0},{"time":4.7333,"x":0,"y":8},{"time":5.0333,"x":0,"y":0},{"time":5.3333,"x":0,"y":0}]},"treadCollider1":{"translate":[{"time":2.5667,"x":0,"y":0},{"time":2.8,"x":0,"y":40.19},{"time":2.9333,"x":0,"y":70.21},{"time":3.1333,"x":0,"y":38.39},{"time":3.2,"x":0,"y":0,"curve":"stepped"},{"time":3.5333,"x":0,"y":0},{"time":3.8,"x":-3.05,"y":0},{"time":3.8667,"x":-2.59,"y":51.2},{"time":4,"x":-2.41,"y":14.46},{"time":4.0667,"x":-2.28,"y":30.63},{"time":4.2,"x":-2.1,"y":26.72},{"time":4.4,"x":-1.73,"y":24.1},{"time":4.7,"x":-1.48,"y":0},{"time":5.3333,"x":0,"y":0}]},"wheel-midRoot2":{"translate":[{"time":2.6,"x":0,"y":0},{"time":2.8,"x":0,"y":15.27},{"time":3.1333,"x":0,"y":38.62},{"time":3.2,"x":3.05,"y":19.39},{"time":3.2333,"x":5.5,"y":14.2},{"time":3.3667,"x":2.75,"y":0},{"time":3.5333,"x":0,"y":0},{"time":3.8,"x":-1.89,"y":0},{"time":3.8667,"x":-1.32,"y":41.29},{"time":4,"x":-1.23,"y":0},{"time":4.0667,"x":-1.16,"y":13.21},{"time":4.2,"x":-1.07,"y":13.75},{"time":4.4,"x":-0.88,"y":9.1},{"time":4.7,"x":-0.75,"y":0},{"time":5.3333,"x":0,"y":0}]},"treadCollider2":{"translate":[{"time":2.6,"x":0,"y":0},{"time":3.1333,"x":0,"y":26.24},{"time":3.2,"x":0,"y":32.3},{"time":3.2333,"x":0,"y":32.28},{"time":3.3667,"x":0,"y":4.66},{"time":3.5333,"x":0,"y":0},{"time":3.8,"x":-0.68,"y":0},{"time":3.8667,"x":0,"y":10.91},{"time":4,"x":0,"y":0},{"time":4.4,"x":0,"y":9.21},{"time":4.7,"x":0,"y":0},{"time":4.7333,"x":0,"y":5.85},{"time":5.0333,"x":0,"y":0}]},"wheel-bigRoot2":{"translate":[{"time":2.1667,"x":0,"y":0},{"time":3.1333,"x":0,"y":-7.28},{"time":3.2333,"x":0,"y":-13.24},{"time":3.3667,"x":0,"y":-13.74},{"time":3.5333,"x":2.06,"y":-40.87},{"time":3.5667,"x":0,"y":-6.85},{"time":3.8,"x":-1.35,"y":21.06},{"time":4.0667,"x":-1.14,"y":6.41},{"time":4.7333,"x":-0.71,"y":-8.18},{"time":5.3333,"x":0,"y":0},{"time":7.3,"x":0,"y":23.55},{"time":7.6,"x":0,"y":0}]},"wheel-bigRoot1":{"translate":[{"time":2.4333,"x":0,"y":0},{"time":2.8,"x":0,"y":65.47},{"time":3.1333,"x":0,"y":12.78},{"time":3.5667,"x":-0.69,"y":46.9},{"time":3.8,"x":-1.35,"y":28.74},{"time":3.8667,"x":0,"y":30.28},{"time":4.1,"x":0,"y":67.93},{"time":4.3667,"x":0,"y":10.24},{"time":4.7333,"x":0,"y":40.05},{"time":5.0333,"x":0,"y":0,"curve":"stepped"},{"time":5.3333,"x":0,"y":0},{"time":7,"x":0,"y":-34.87},{"time":7.3,"x":0,"y":-16.82},{"time":7.6,"x":0,"y":0}]},"tankBody":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1.0667,"angle":-3.79,"curve":[0.25,0,0.75,1]},{"time":2.3333,"angle":-0.26},{"time":2.8,"angle":-3.13},{"time":3.5667,"angle":-7.55},{"time":3.7333,"angle":-2.84},{"time":3.8667,"angle":3.32},{"time":4.0667,"angle":-6.06},{"time":4.3667,"angle":2.43},{"time":4.7,"angle":-6.59},{"time":5.4333,"angle":0.6,"curve":"stepped"},{"time":6.4333,"angle":0.6},{"time":7,"angle":6.46,"curve":"stepped"},{"time":7.2333,"angle":6.46,"curve":[0.561,0.15,0.696,0.35]},{"time":7.5,"angle":-1.06,"curve":[0.46,0.15,0.758,0.45]},{"time":7.6,"angle":-2.29},{"time":8.2333,"angle":0}],"translate":[{"time":2.3333,"x":0,"y":0},{"time":2.8,"x":0,"y":25.83},{"time":3.5667,"x":0,"y":9.49},{"time":3.8667,"x":0,"y":43.26},{"time":4.1,"x":1.97,"y":30.11},{"time":4.5,"x":0,"y":25.64},{"time":5.4333,"x":0,"y":0},{"time":7.3,"x":0,"y":21.87},{"time":7.5,"x":0,"y":0}]},"treadGravity2":{"translate":[{"time":0,"x":0,"y":6.44},{"time":2.1667,"x":0,"y":0},{"time":2.4333,"x":0,"y":5.18},{"time":2.8,"x":0,"y":4.18},{"time":2.9333,"x":0,"y":-2.86},{"time":3.0667,"x":0,"y":-17.16},{"time":3.1333,"x":0,"y":-3.82},{"time":3.2333,"x":0,"y":2.1},{"time":3.6,"x":0,"y":2.23},{"time":3.7333,"x":0,"y":32.22},{"time":3.8,"x":0,"y":30.63},{"time":3.8667,"x":0,"y":4.41},{"time":4,"x":0,"y":32.39},{"time":4.2667,"x":0,"y":-6.67},{"time":4.8667,"x":0,"y":6.44}]},"treadGravity1":{"translate":[{"time":0,"x":0,"y":-5.85},{"time":2.1667,"x":0,"y":0},{"time":2.4333,"x":0,"y":-1.7},{"time":2.8,"x":0,"y":-3.54},{"time":2.9333,"x":0,"y":-10.75},{"time":3.0667,"x":0,"y":-4.71},{"time":3.1333,"x":0,"y":-7.59},{"time":3.2333,"x":0,"y":3.93},{"time":3.7333,"x":0,"y":27.08},{"time":3.8,"x":0,"y":7.55},{"time":3.8667,"x":0,"y":-7.88},{"time":4,"x":0,"y":0.03},{"time":4.2667,"x":0,"y":-23.84},{"time":4.8667,"x":0,"y":-5.85}]},"antenna1":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76},{"time":8.3,"angle":1.84},{"time":8.4667,"angle":0}]},"antenna2":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76}]},"antenna3":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76}]},"antenna4":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76}]},"antenna5":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76}]},"antenna6":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.148,0.32,0.75,1]},{"time":0.9667,"angle":-3.01,"curve":[0.162,0.22,0.75,1]},{"time":1.4667,"angle":1.06},{"time":1.7,"angle":-0.53,"curve":"stepped"},{"time":2.4333,"angle":-0.35,"curve":[0.165,0.23,0.75,1]},{"time":2.7333,"angle":4.43,"curve":[0.25,0,0.75,1]},{"time":3,"angle":-3.93,"curve":[0.25,0,0.75,1]},{"time":3.1667,"angle":3.65},{"time":3.2333,"angle":-2.04},{"time":3.4,"angle":-6.88,"curve":[0.116,0.26,0.75,1]},{"time":3.6333,"angle":-3.09},{"time":3.6667,"angle":-3.74},{"time":3.8,"angle":-9.68},{"time":3.9333,"angle":9.94},{"time":4.1333,"angle":-4.75},{"time":4.4333,"angle":2.81,"curve":[0.114,0.31,0.75,1]},{"time":4.7667,"angle":-8.81,"curve":[0.091,0.3,0.75,1]},{"time":5.3333,"angle":2.35},{"time":5.6,"angle":-1.71},{"time":6.7,"angle":0.05},{"time":7.4667,"angle":9.57},{"time":7.6667,"angle":-9.47},{"time":7.8667,"angle":4.75},{"time":8.1,"angle":0.76}]},"machinegun":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.17,0.25,0.75,1]},{"time":0.8667,"angle":-2.96},{"time":1.9333,"angle":-5.01,"curve":[0.349,0.12,0.935,0.86]},{"time":2.5333,"angle":-0.62},{"time":2.9667,"angle":2.77,"curve":[0.426,0.34,0.734,0.7]},{"time":3.2333,"angle":-5.86,"curve":[0.25,0,0.78,0.52]},{"time":3.8667,"angle":10.58},{"time":4.0667,"angle":-20.73},{"time":4.2333,"angle":20.49,"curve":[0.309,0.08,0.77,0.66]},{"time":4.5,"angle":-3.45},{"time":4.8,"angle":5.59},{"time":5.2667,"angle":0},{"time":7.1667,"angle":12.53},{"time":7.5667,"angle":-13.52},{"time":7.9333,"angle":2.46},{"time":8.1667,"angle":0}]},"cannonTarget":{"translate":[{"time":0.6333,"x":0,"y":0,"curve":[0.628,0,0.75,1]},{"time":1.5333,"x":0.36,"y":78.39},{"time":2.8667,"x":0,"y":0},{"time":3.1667,"x":98.09,"y":28.34},{"time":3.3667,"x":99.47,"y":137.36},{"time":3.8,"x":161.3,"y":188.8},{"time":3.9,"x":147.62,"y":234.46},{"time":4.0667,"x":112.09,"y":204.89},{"time":4.3,"x":77.48,"y":32.19},{"time":4.7333,"x":0,"y":0}]},"wheel-mid1":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.449,0.12,0.755,0.5]},{"time":1.4,"angle":120,"curve":[0.378,0.2,0.67,0.58]},{"time":1.7,"angle":240,"curve":[0.444,0.25,0.651,0.55]},{"time":1.9333,"angle":0},{"time":2.1333,"angle":120},{"time":2.3667,"angle":240},{"time":2.6,"angle":0},{"time":2.8,"angle":120},{"time":3.0667,"angle":240},{"time":3.2333,"angle":0},{"time":3.4,"angle":120},{"time":3.6333,"angle":240},{"time":3.9,"angle":0},{"time":4.2333,"angle":120,"curve":[0.409,0.28,0.689,0.65]},{"time":4.5,"angle":240},{"time":4.7333,"angle":0},{"time":5.1,"angle":120},{"time":5.4,"angle":240},{"time":5.7333,"angle":0},{"time":6.1,"angle":120},{"time":6.4,"angle":240,"curve":[0.211,0.68,0.503,0.83]},{"time":6.7667,"angle":0}]},"wheel-big1":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.449,0.12,0.755,0.5]},{"time":1.4,"angle":120,"curve":[0.378,0.2,0.67,0.58]},{"time":1.7,"angle":240,"curve":[0.444,0.25,0.651,0.55]},{"time":1.9333,"angle":0},{"time":2.1333,"angle":120},{"time":2.3667,"angle":240},{"time":2.6,"angle":0},{"time":2.8,"angle":120},{"time":3.0667,"angle":240},{"time":3.2333,"angle":0},{"time":3.4,"angle":120},{"time":3.6333,"angle":240},{"time":3.9,"angle":0},{"time":4.2333,"angle":120,"curve":[0.409,0.28,0.689,0.65]},{"time":4.5,"angle":240},{"time":4.7333,"angle":0},{"time":5.1,"angle":120},{"time":5.4,"angle":240},{"time":5.7333,"angle":0},{"time":6.1,"angle":120},{"time":6.4,"angle":240,"curve":[0.211,0.68,0.503,0.83]},{"time":6.7667,"angle":0}]},"wheel-small1":{"rotate":[{"time":0.6333,"angle":0,"curve":[0.449,0.12,0.755,0.5]},{"time":1.4,"angle":120,"curve":[0.378,0.2,0.67,0.58]},{"time":1.7,"angle":240,"curve":[0.444,0.25,0.651,0.55]},{"time":1.9333,"angle":360},{"time":2.1333,"angle":120},{"time":2.3667,"angle":240},{"time":2.6,"angle":360},{"time":2.8,"angle":120},{"time":3.0667,"angle":240},{"time":3.2333,"angle":360},{"time":3.4,"angle":120},{"time":3.6333,"angle":240},{"time":3.9,"angle":360},{"time":4.2333,"angle":120,"curve":[0.409,0.28,0.689,0.65]},{"time":4.5,"angle":240},{"time":4.7333,"angle":360},{"time":5.1,"angle":120},{"time":5.4,"angle":240},{"time":5.7333,"angle":360},{"time":6.1,"angle":120},{"time":6.4,"angle":240,"curve":[0.211,0.68,0.503,0.83]},{"time":6.7667,"angle":360}]}},"paths":{"treads":{"position":[{"time":0.6333,"curve":[0.57,0.08,0.705,0.61]},{"time":2.4667,"position":0.3899,"curve":[0.33,0.34,0.663,0.67]},{"time":2.6,"position":0.423,"curve":[0.321,0.36,0.654,0.69]},{"time":3,"position":0.538,"curve":[0.302,0.41,0.638,0.73]},{"time":3.7667,"position":0.79,"curve":[0.458,0.08,0.663,0.68]},{"time":4,"position":0.885},{"time":4.1333,"position":0.894,"curve":[0.364,0.2,0.864,0.86]},{"time":4.3333,"position":0.934,"curve":[0.229,0,0.634,0.49]},{"time":4.5333,"position":0.986,"curve":[0.447,0.41,0.851,0.85]},{"time":4.7333,"position":1.058},{"time":6.6,"position":1.4716,"curve":[0.467,0.75,0.531,1]},{"time":7.0991,"position":1.5,"curve":"stepped"},{"time":7.1}]}}}}},"transforms":{"skeleton":{"hash":"98YbvDJg6Q1kCeNRUdNtjw9cgvM","spine":"3.6.39","width":796.81,"height":191},"bones":[{"name":"root"},{"name":"wheel2overlay","parent":"root","x":-300},{"name":"wheel1overlay","parent":"wheel2overlay"},{"name":"wheel1","parent":"wheel1overlay","length":93.7},{"name":"rotate-handle","parent":"wheel1","x":93.9,"y":0.05},{"name":"wheel2","parent":"wheel2overlay","length":67},{"name":"wheel3overlay","parent":"root","x":320},{"name":"wheel3","parent":"wheel3overlay","length":67}],"slots":[{"name":"wheel-big","bone":"wheel1","attachment":"transforms/wheel-big"},{"name":"wheel-mid","bone":"wheel3","attachment":"transforms/wheel-mid"},{"name":"wheel-mid2","bone":"wheel2","attachment":"transforms/wheel-mid"},{"name":"wheel-big-overlay","bone":"wheel1overlay","attachment":"transforms/wheel-big-overlay","blend":"multiply"},{"name":"wheel-mid-overlay","bone":"wheel2overlay","attachment":"transforms/wheel-mid-overlay","blend":"multiply"},{"name":"wheel-mid-overlay2","bone":"wheel3overlay","attachment":"transforms/wheel-mid-overlay","blend":"multiply"}],"transform":[{"name":"wheel1","order":0,"bones":["wheel1overlay"],"target":"wheel3overlay","rotateMix":0,"translateMix":0.5,"scaleMix":0,"shearMix":0},{"name":"wheel2","order":1,"bones":["wheel2"],"target":"wheel1","rotation":73.5,"x":354.42,"y":-128.68,"translateMix":0,"scaleMix":0,"shearMix":0},{"name":"wheel3","order":2,"bones":["wheel3"],"target":"wheel1","rotation":-28.7,"x":378.41,"y":91.78,"translateMix":0,"scaleMix":0,"shearMix":0}],"skins":{"default":{"wheel-big":{"transforms/wheel-big":{"width":191,"height":191}},"wheel-big-overlay":{"transforms/wheel-big-overlay":{"width":186,"height":186}},"wheel-mid":{"transforms/wheel-mid":{"width":136,"height":136}},"wheel-mid-overlay":{"transforms/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid-overlay2":{"transforms/wheel-mid-overlay":{"width":136,"height":136}},"wheel-mid2":{"transforms/wheel-mid":{"width":136,"height":136}}}},"animations":{"animation":{"bones":{"wheel1overlay":{"rotate":[{"time":0,"angle":-33.11}]},"wheel3overlay":{"translate":[{"time":0,"x":78.92,"y":135.29}]},"wheel2overlay":{"translate":[{"time":0,"x":-35.7,"y":140.92}]}}}}},"vine":{"skeleton":{"hash":"T04KtjkqlZlxxJyqQ+eLs4LxrFA","spine":"3.6.39","width":967.8,"height":232.06},"bones":[{"name":"root","rotation":270},{"name":"vine-control4","parent":"root","rotation":93.48,"x":-61.85,"y":929.25},{"name":"vine-control3","parent":"root","length":10,"rotation":90,"x":90.36,"y":736},{"name":"vine-control2","parent":"root","length":10,"rotation":90,"x":-47.41,"y":491},{"name":"vine-control1","parent":"root","length":10,"rotation":90,"x":81.79,"y":245},{"name":"base","parent":"root"},{"name":"vine1","parent":"root","length":74,"rotation":90,"x":339.1,"y":-467.15},{"name":"vine2","parent":"vine1","length":74,"x":74},{"name":"vine3","parent":"vine1","length":74,"rotation":38.95,"x":137.97,"y":47.51},{"name":"vine4","parent":"vine1","length":74,"rotation":16.68,"x":214.29,"y":68.52},{"name":"vine5","parent":"vine1","length":74,"rotation":-21.74,"x":289.61,"y":40.93},{"name":"vine6","parent":"vine1","length":74,"rotation":-50.04,"x":341.13,"y":-15.58},{"name":"vine7","parent":"vine1","length":74,"rotation":-39.26,"x":402.7,"y":-61.82},{"name":"vine8","parent":"vine1","length":74,"rotation":-6.18,"x":483.27,"y":-69.84},{"name":"vine9","parent":"vine1","length":74,"rotation":27.11,"x":554.26,"y":-36.44},{"name":"vine10","parent":"vine1","length":74,"rotation":48,"x":608.63,"y":19.06},{"name":"vine11","parent":"vine1","length":74,"rotation":39.71,"x":670.66,"y":66.4},{"name":"vine12","parent":"vine1","length":74,"rotation":10.73,"x":750.1,"y":80.23},{"name":"vine13","parent":"vine1","length":74,"rotation":-18.44,"x":826.07,"y":56.95}],"slots":[{"name":"vine-path","bone":"root","attachment":"vine-path"},{"name":"vine","bone":"vine1","attachment":"vine/vine"}],"ik":[{"name":"IK1","order":3,"bones":["vine-control1"],"target":"vine-control2"},{"name":"IK2","order":2,"bones":["vine-control2"],"target":"vine-control3"},{"name":"IK3","order":1,"bones":["vine-control3"],"target":"vine-control4"},{"name":"IK4","order":0,"bones":["vine-control4"],"target":"vine-control3"},{"name":"IK5","order":4,"bones":["base"],"target":"vine-control1"}],"path":[{"name":"vine-path","order":5,"bones":["vine1","vine2","vine3","vine4","vine5","vine6","vine7","vine8","vine9","vine10","vine11","vine12","vine13"],"target":"vine-path","spacingMode":"percent","rotateMode":"chainScale","spacing":0.077}],"skins":{"default":{"vine":{"vine/vine":{"type":"mesh","uvs":[0,0,0.5,0,1,0,1,0.03846,1,0.07692,1,0.11538,1,0.15385,1,0.19231,1,0.23077,1,0.26923,1,0.30769,1,0.34615,1,0.38462,1,0.42308,1,0.46154,1,0.5,1,0.53846,1,0.57692,1,0.61538,1,0.65385,1,0.69231,1,0.73077,1,0.76923,1,0.80769,1,0.84615,1,0.88462,1,0.92308,1,0.96154,1,1,0.5,1,0,1,0,0.96154,0,0.92308,0,0.88462,0,0.84615,0,0.80769,0,0.76923,0,0.73077,0,0.69231,0,0.65385,0,0.61538,0,0.57692,0,0.53846,0,0.5,0,0.46154,0,0.42308,0,0.38462,0,0.34615,0,0.30769,0,0.26923,0,0.23077,0,0.19231,0,0.15385,0,0.11538,0,0.07692,0,0.03846,0.5,0.03846,0.5,0.07692,0.5,0.11538,0.5,0.15385,0.5,0.19231,0.5,0.23077,0.5,0.26923,0.5,0.30769,0.5,0.34615,0.5,0.38462,0.5,0.42308,0.5,0.46154,0.5,0.5,0.5,0.53846,0.5,0.57692,0.5,0.61538,0.5,0.65385,0.5,0.69231,0.5,0.73077,0.5,0.76923,0.5,0.80769,0.5,0.84615,0.5,0.88462,0.5,0.92308,0.5,0.96154],"triangles":[55,0,1,56,1,2,55,1,56,56,2,3,54,55,56,57,56,3,57,3,4,53,54,57,58,57,4,53,57,58,58,4,5,52,53,58,59,58,5,54,56,57,52,58,59,59,5,6,51,52,59,60,59,6,51,59,60,60,6,7,50,51,60,61,60,7,50,60,61,61,7,8,49,50,61,62,61,8,49,61,62,62,8,9,48,49,62,63,62,9,48,62,63,63,9,10,47,48,63,64,63,10,47,63,64,64,10,11,46,47,64,65,64,11,46,64,65,65,11,12,45,46,65,66,65,12,45,65,66,66,12,13,44,45,66,67,66,13,44,66,67,67,13,14,43,44,67,68,67,14,43,67,68,68,14,15,42,43,68,69,68,15,42,68,69,69,15,16,41,42,69,70,69,16,41,69,70,70,16,17,40,41,70,71,70,17,40,70,71,71,17,18,39,40,71,72,71,18,39,71,72,72,18,19,38,39,72,73,72,19,38,72,73,73,19,20,37,38,73,74,73,20,37,73,74,74,20,21,36,37,74,75,74,21,36,74,75,75,21,22,35,36,75,76,75,22,35,75,76,76,22,23,34,35,76,77,76,23,34,76,77,77,23,24,33,77,78,78,24,25,32,33,78,79,78,25,32,78,79,33,34,77,78,77,24,31,32,79,80,79,26,31,79,80,80,26,27,30,31,80,29,80,27,30,80,29,29,27,28,79,25,26],"vertices":[2,17,146,33.89,0.21894,18,72,33.89,0.78106,2,17,146,-0.11,0.16997,18,72,-0.11,0.83003,2,17,146,-34.11,0.21894,18,72,-34.11,0.78106,3,16,183,-34.11,0.04748,17,109,-34.11,0.33417,18,35,-34.11,0.61835,3,16,146,-34.11,0.14279,17,72,-34.11,0.49762,18,-2,-34.11,0.35958,4,15,183,-34.11,0.04672,16,109,-34.11,0.31228,17,35,-34.11,0.48857,18,-39,-34.11,0.15243,4,15,146,-34.11,0.14271,16,72,-34.11,0.49271,17,-2,-34.11,0.3155,18,-76,-34.11,0.04909,4,14,183,-34.11,0.04729,15,109,-34.11,0.31604,16,35,-34.11,0.49369,17,-39,-34.11,0.14299,4,14,146,-34.11,0.14299,15,72,-34.11,0.49369,16,-2,-34.11,0.31604,17,-76,-34.11,0.04729,4,13,183,-34.11,0.04729,14,109,-34.11,0.31604,15,35,-34.11,0.49369,16,-39,-34.11,0.14299,4,13,146,-34.11,0.14299,14,72,-34.11,0.49369,15,-2,-34.11,0.31604,16,-76,-34.11,0.04729,4,12,183,-34.11,0.04729,13,109,-34.11,0.31604,14,35,-34.11,0.49369,15,-39,-34.11,0.14299,4,12,146,-34.11,0.14299,13,72,-34.11,0.49369,14,-2,-34.11,0.31604,15,-76,-34.11,0.04729,4,11,183,-34.11,0.04729,12,109,-34.11,0.31604,13,35,-34.11,0.49369,14,-39,-34.11,0.14299,4,11,146,-34.11,0.14299,12,72,-34.11,0.49369,13,-2,-34.11,0.31604,14,-76,-34.11,0.04729,4,10,183,-34.11,0.04729,11,109,-34.11,0.31604,12,35,-34.11,0.49369,13,-39,-34.11,0.14299,4,10,146,-34.11,0.14299,11,72,-34.11,0.49369,12,-2,-34.11,0.31604,13,-76,-34.11,0.04729,4,9,183,-34.11,0.04729,10,109,-34.11,0.31604,11,35,-34.11,0.49369,12,-39,-34.11,0.14299,4,9,146,-34.11,0.14299,10,72,-34.11,0.49369,11,-2,-34.11,0.31604,12,-76,-34.11,0.04729,4,8,183,-34.11,0.04729,9,109,-34.11,0.31604,10,35,-34.11,0.49369,11,-39,-34.11,0.14299,4,8,146,-34.11,0.14299,9,72,-34.11,0.49369,10,-2,-34.11,0.31604,11,-76,-34.11,0.04729,4,7,183,-34.11,0.04752,8,109,-34.11,0.31596,9,35,-34.11,0.49356,10,-39,-34.11,0.14296,4,7,146,-34.11,0.14433,8,72,-34.11,0.49291,9,-2,-34.11,0.31554,10,-76,-34.11,0.04721,4,6,183,-34.11,0.04107,7,109,-34.11,0.32351,8,35,-34.11,0.49271,9,-39,-34.11,0.14271,4,6,146,-34.11,0.12766,7,72,-34.11,0.51334,8,-2,-34.11,0.31227,9,-76,-34.11,0.04672,3,6,109,-34.11,0.30479,7,35,-34.11,0.55251,8,-39,-34.11,0.14271,3,6,72,-34.11,0.55512,7,-2,-34.11,0.39816,8,-76,-34.11,0.04672,2,6,35,-34.11,0.78922,7,-39,-34.11,0.21078,2,6,-2,-34.11,0.89275,7,-76,-34.11,0.10725,2,6,-2,-0.11,0.92721,7,-76,-0.11,0.07279,2,6,-2,33.89,0.89275,7,-76,33.89,0.10725,2,6,35,33.89,0.78922,7,-39,33.89,0.21078,3,6,72,33.89,0.55512,7,-2,33.89,0.39816,8,-76,33.89,0.04672,3,6,109,33.89,0.30479,7,35,33.89,0.55251,8,-39,33.89,0.14271,4,6,146,33.89,0.12766,7,72,33.89,0.51334,8,-2,33.89,0.31227,9,-76,33.89,0.04672,4,6,183,33.89,0.04107,7,109,33.89,0.32351,8,35,33.89,0.49271,9,-39,33.89,0.14271,4,7,146,33.89,0.14433,8,72,33.89,0.49291,9,-2,33.89,0.31554,10,-76,33.89,0.04721,4,7,183,33.89,0.04752,8,109,33.89,0.31596,9,35,33.89,0.49356,10,-39,33.89,0.14296,4,8,146,33.89,0.14299,9,72,33.89,0.49369,10,-2,33.89,0.31604,11,-76,33.89,0.04729,4,8,183,33.89,0.04729,9,109,33.89,0.31604,10,35,33.89,0.49369,11,-39,33.89,0.14299,4,9,146,33.89,0.14299,10,72,33.89,0.49369,11,-2,33.89,0.31604,12,-76,33.89,0.04729,4,9,183,33.89,0.04729,10,109,33.89,0.31604,11,35,33.89,0.49369,12,-39,33.89,0.14299,4,10,146,33.89,0.14299,11,72,33.89,0.49369,12,-2,33.89,0.31604,13,-76,33.89,0.04729,4,10,183,33.89,0.04729,11,109,33.89,0.31604,12,35,33.89,0.49369,13,-39,33.89,0.14299,4,11,146,33.89,0.14299,12,72,33.89,0.49369,13,-2,33.89,0.31604,14,-76,33.89,0.04729,4,11,183,33.89,0.04729,12,109,33.89,0.31604,13,35,33.89,0.49369,14,-39,33.89,0.14299,4,12,146,33.89,0.14299,13,72,33.89,0.49369,14,-2,33.89,0.31604,15,-76,33.89,0.04729,4,12,183,33.89,0.04729,13,109,33.89,0.31604,14,35,33.89,0.49369,15,-39,33.89,0.14299,4,13,146,33.89,0.14299,14,72,33.89,0.49369,15,-2,33.89,0.31604,16,-76,33.89,0.04729,4,13,183,33.89,0.04729,14,109,33.89,0.31604,15,35,33.89,0.49369,16,-39,33.89,0.14299,4,14,146,33.89,0.14299,15,72,33.89,0.49369,16,-2,33.89,0.31604,17,-76,33.89,0.04729,4,14,183,33.89,0.04729,15,109,33.89,0.31604,16,35,33.89,0.49369,17,-39,33.89,0.14299,4,15,146,33.89,0.14271,16,72,33.89,0.49271,17,-2,33.89,0.3155,18,-76,33.89,0.04909,4,15,183,33.89,0.04672,16,109,33.89,0.31228,17,35,33.89,0.48857,18,-39,33.89,0.15243,3,16,146,33.89,0.14279,17,72,33.89,0.49762,18,-2,33.89,0.35958,3,16,183,33.89,0.04748,17,109,33.89,0.33417,18,35,33.89,0.61835,3,16,183,-0.11,0.03069,17,109,-0.11,0.31679,18,35,-0.11,0.65252,3,16,146,-0.11,0.11465,17,72,-0.11,0.5508,18,-2,-0.11,0.33455,4,15,183,-0.11,0.03047,16,109,-0.11,0.30393,17,35,-0.11,0.54628,18,-39,-0.11,0.11931,4,15,146,-0.11,0.11465,16,72,-0.11,0.54869,17,-2,-0.11,0.30539,18,-76,-0.11,0.03128,4,14,183,-0.11,0.03064,15,109,-0.11,0.30559,16,35,-0.11,0.54905,17,-39,-0.11,0.11473,4,14,146,-0.11,0.11473,15,72,-0.11,0.54905,16,-2,-0.11,0.30559,17,-76,-0.11,0.03064,4,13,183,-0.11,0.03064,14,109,-0.11,0.30559,15,35,-0.11,0.54905,16,-39,-0.11,0.11473,4,13,146,-0.11,0.11473,14,72,-0.11,0.54905,15,-2,-0.11,0.30559,16,-76,-0.11,0.03064,4,12,183,-0.11,0.03064,13,109,-0.11,0.30559,14,35,-0.11,0.54905,15,-39,-0.11,0.11473,4,12,146,-0.11,0.11473,13,72,-0.11,0.54905,14,-2,-0.11,0.30559,15,-76,-0.11,0.03064,4,11,183,-0.11,0.03064,12,109,-0.11,0.30559,13,35,-0.11,0.54905,14,-39,-0.11,0.11473,4,11,146,-0.11,0.11473,12,72,-0.11,0.54905,13,-2,-0.11,0.30559,14,-76,-0.11,0.03064,4,10,183,-0.11,0.03064,11,109,-0.11,0.30559,12,35,-0.11,0.54905,13,-39,-0.11,0.11473,4,10,146,-0.11,0.11473,11,72,-0.11,0.54905,12,-2,-0.11,0.30559,13,-76,-0.11,0.03064,4,9,183,-0.11,0.03064,10,109,-0.11,0.30559,11,35,-0.11,0.54905,12,-39,-0.11,0.11473,4,9,146,-0.11,0.11473,10,72,-0.11,0.54905,11,-2,-0.11,0.30559,12,-76,-0.11,0.03064,4,8,183,-0.11,0.03064,9,109,-0.11,0.30559,10,35,-0.11,0.54905,11,-39,-0.11,0.11473,4,8,146,-0.11,0.11473,9,72,-0.11,0.54905,10,-2,-0.11,0.30559,11,-76,-0.11,0.03064,4,7,183,-0.11,0.03064,8,109,-0.11,0.30559,9,35,-0.11,0.54905,10,-39,-0.11,0.11473,4,7,146,-0.11,0.11531,8,72,-0.11,0.54869,9,-2,-0.11,0.30539,10,-76,-0.11,0.03062,3,7,109,-0.11,0.31832,8,35,-0.11,0.56386,9,-39,-0.11,0.11782,4,6,146,-0.11,0.09912,7,72,-0.11,0.56648,8,-2,-0.11,0.30393,9,-76,-0.11,0.03047,3,6,109,-0.11,0.27809,7,35,-0.11,0.60726,8,-39,-0.11,0.11465,3,6,72,-0.11,0.55966,7,-2,-0.11,0.40987,8,-76,-0.11,0.03047,2,6,35,-0.11,0.82292,7,-39,-0.11,0.17708],"hull":56}},"vine-path":{"vine-path":{"type":"path","lengths":[269.63,565.74,868.39,1115.17,2397.79],"vertexCount":15,"vertices":[1,4,-577.51,81.19,1,1,5,0.15,-0.34,1,1,5,97.86,-4.65,1,1,4,-110.19,0.87,1,1,4,-0.88,1.33,1,1,4,88.25,3.74,1,1,3,-112.14,0.22,1,1,3,-0.31,0.32,1,1,3,117.4,-0.79,1,1,2,-109.9,0.44,1,1,2,-0.9,0.38,1,1,2,97.24,1.94,1,1,1,108.44,-1.44,1,1,1,0.12,0.17,1,1,4,929.99,-307.12,1]}}}},"animations":{"animation":{"slots":{"vine":{"color":[{"time":0,"color":"ffcb73ff","curve":[0.25,0,0.75,1]},{"time":10.3667,"color":"fefaffff"}]}},"bones":{"vine1":{"scale":[{"time":0,"x":0.1,"y":0.1,"curve":[0.107,0.51,0.398,1.16]},{"time":5.1667,"x":1,"y":1,"curve":"stepped"},{"time":8.7,"x":1,"y":1,"curve":[0.881,0.14,0.971,0.23]},{"time":10.3667,"x":1,"y":0.035}]}},"paths":{"vine-path":{"spacing":[{"time":0,"curve":[0.25,0,0.75,1]},{"time":5.1667,"spacing":0.083,"curve":[0.181,0.5,0.711,0.54]},{"time":7.0333,"spacing":0.08,"curve":[0.503,0.05,0.824,0.56]},{"time":10.3667}]}}}}}} \ No newline at end of file diff --git a/spine-ts/webgl/demos/assets/heroes.atlas b/spine-ts/webgl/demos/assets/heroes.atlas new file mode 100755 index 000000000..64936591a --- /dev/null +++ b/spine-ts/webgl/demos/assets/heroes.atlas @@ -0,0 +1,2911 @@ + +heroes.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +Assassin/Assassin_arm_lower_far + rotate: false + xy: 706, 337 + size: 40, 43 + orig: 85, 69 + offset: 22, 13 + index: -1 +Assassin/Assassin_arm_lower_near + rotate: false + xy: 842, 289 + size: 40, 43 + orig: 85, 69 + offset: 23, 15 + index: -1 +Assassin/Assassin_arm_upper_far + rotate: false + xy: 108, 550 + size: 31, 60 + orig: 99, 93 + offset: 33, 16 + index: -1 +Assassin/Assassin_arm_upper_near + rotate: false + xy: 404, 483 + size: 32, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Assassin/Assassin_foot_far_1 + rotate: false + xy: 335, 776 + size: 63, 28 + orig: 107, 58 + offset: 24, 14 + index: -1 +Assassin/Assassin_foot_far_2_bent + rotate: true + xy: 822, 565 + size: 56, 36 + orig: 101, 64 + offset: 21, 13 + index: -1 +Assassin/Assassin_foot_near_1 + rotate: true + xy: 281, 109 + size: 62, 28 + orig: 107, 58 + offset: 25, 14 + index: -1 +Assassin/Assassin_foot_near_2_bent + rotate: true + xy: 495, 230 + size: 56, 36 + orig: 101, 64 + offset: 21, 14 + index: -1 +Assassin/Assassin_hand_far_1_fistBack + rotate: false + xy: 804, 304 + size: 36, 35 + orig: 67, 53 + offset: 15, 8 + index: -1 +Assassin/Assassin_hand_far_2_fistPalm + rotate: false + xy: 668, 343 + size: 36, 33 + orig: 67, 53 + offset: 16, 9 + index: -1 +Assassin/Assassin_hand_near_1_fistBack + rotate: false + xy: 681, 140 + size: 36, 35 + orig: 67, 53 + offset: 17, 7 + index: -1 +Assassin/Assassin_hand_near_2_fistPalm + rotate: false + xy: 725, 2 + size: 36, 33 + orig: 67, 53 + offset: 15, 11 + index: -1 +Assassin/Assassin_head_1 + rotate: true + xy: 2, 330 + size: 136, 108 + orig: 179, 179 + offset: 18, 13 + index: -1 +Assassin/Assassin_head_2_injured + rotate: true + xy: 2, 192 + size: 136, 108 + orig: 179, 179 + offset: 18, 11 + index: -1 +Assassin/Assassin_leg_lower_far + rotate: true + xy: 242, 2 + size: 37, 63 + orig: 64, 107 + offset: 17, 22 + index: -1 +Assassin/Assassin_leg_lower_near_1 + rotate: true + xy: 299, 546 + size: 37, 63 + orig: 64, 107 + offset: 17, 22 + index: -1 +Assassin/Assassin_leg_lower_near_2 + rotate: false + xy: 408, 418 + size: 38, 63 + orig: 64, 107 + offset: 16, 23 + index: -1 +Assassin/Assassin_leg_upper_far + rotate: false + xy: 433, 2 + size: 25, 49 + orig: 58, 89 + offset: 17, 17 + index: -1 +Assassin/Assassin_leg_upper_near + rotate: false + xy: 405, 2 + size: 26, 49 + orig: 58, 89 + offset: 16, 17 + index: -1 +Assassin/Assassin_neck + rotate: false + xy: 936, 88 + size: 22, 20 + orig: 43, 36 + offset: 11, 8 + index: -1 +Assassin/Assassin_torso + rotate: false + xy: 904, 630 + size: 73, 70 + orig: 169, 149 + offset: 50, 36 + index: -1 +Assassin/Assassin_waist + rotate: false + xy: 357, 2 + size: 46, 49 + orig: 93, 71 + offset: 25, 12 + index: -1 +BeardyBuck/BeardyBuck_arm_lower_far + rotate: false + xy: 735, 80 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +YoungBuck/YoungBuck_arm_lower_far + rotate: false + xy: 735, 80 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +BeardyBuck/BeardyBuck_arm_lower_near + rotate: false + xy: 893, 249 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +BeardyBuck/BeardyBuck_arm_upper_far + rotate: false + xy: 407, 115 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Buck/BuckMatthews_arm_upper_far + rotate: false + xy: 407, 115 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +BeardyBuck/BeardyBuck_arm_upper_near + rotate: false + xy: 412, 53 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +BeardyBuck/BeardyBuck_foot_far_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +BeardyBuck/BeardyBuck_foot_near_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Buck/BuckMatthews_foot_far_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Buck/BuckMatthews_foot_near_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Duck/DuckMatthews_foot_far_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Duck/DuckMatthews_foot_near_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Truck/TruckMatthews_foot_far_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Truck/TruckMatthews_foot_near_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +YoungBuck/YoungBuck_foot_far_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +YoungBuck/YoungBuck_foot_near_1 + rotate: true + xy: 639, 244 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +BeardyBuck/BeardyBuck_foot_far_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +BeardyBuck/BeardyBuck_foot_near_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Buck/BuckMatthews_foot_far_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Buck/BuckMatthews_foot_near_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Chuck/ChuckMatthews_foot_far_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Chuck/ChuckMatthews_foot_near_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Duck/DuckMatthews_foot_far_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Duck/DuckMatthews_foot_near_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +YoungBuck/YoungBuck_foot_far_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +YoungBuck/YoungBuck_foot_near_2_bent + rotate: false + xy: 805, 525 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +BeardyBuck/BeardyBuck_hand_far_1_fistBack + rotate: true + xy: 657, 302 + size: 39, 31 + orig: 67, 53 + offset: 15, 13 + index: -1 +BeardyBuck/BeardyBuck_hand_far_2_fistPalm + rotate: true + xy: 864, 532 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +BeardyBuck/BeardyBuck_hand_near_1_fistBack + rotate: true + xy: 986, 485 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +BeardyBuck/BeardyBuck_hand_near_2_fistPalm + rotate: true + xy: 857, 388 + size: 34, 32 + orig: 67, 53 + offset: 17, 10 + index: -1 +BeardyBuck/BeardyBuck_head_1 + rotate: true + xy: 141, 548 + size: 100, 118 + orig: 179, 179 + offset: 39, 6 + index: -1 +BeardyBuck/BeardyBuck_head_2_injured + rotate: false + xy: 268, 652 + size: 100, 122 + orig: 179, 179 + offset: 38, 6 + index: -1 +BeardyBuck/BeardyBuck_leg_lower_far + rotate: false + xy: 432, 580 + size: 36, 60 + orig: 64, 107 + offset: 16, 26 + index: -1 +BeardyBuck/BeardyBuck_leg_lower_near_1 + rotate: false + xy: 311, 108 + size: 38, 63 + orig: 64, 107 + offset: 15, 22 + index: -1 +BeardyBuck/BeardyBuck_leg_lower_near_2 + rotate: true + xy: 898, 557 + size: 34, 62 + orig: 34, 62 + offset: 0, 0 + index: -1 +BeardyBuck/BeardyBuck_leg_upper_far + rotate: true + xy: 615, 378 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +BeardyBuck/BeardyBuck_leg_upper_near + rotate: false + xy: 568, 293 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +BeardyBuck/BeardyBuck_neck + rotate: true + xy: 906, 197 + size: 24, 21 + orig: 43, 36 + offset: 10, 8 + index: -1 +GabrielCaine/GabrielCaine_neck + rotate: true + xy: 906, 197 + size: 24, 21 + orig: 43, 36 + offset: 10, 8 + index: -1 +YoungBuck/YoungBuck_neck + rotate: true + xy: 906, 197 + size: 24, 21 + orig: 43, 36 + offset: 10, 8 + index: -1 +BeardyBuck/BeardyBuck_torso + rotate: false + xy: 419, 776 + size: 56, 61 + orig: 169, 149 + offset: 56, 38 + index: -1 +BeardyBuck/BeardyBuck_waist + rotate: true + xy: 445, 238 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +Buck/BuckMatthews_arm_lower_far + rotate: false + xy: 736, 40 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +Buck/BuckMatthews_arm_lower_near + rotate: true + xy: 652, 177 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +Buck/BuckMatthews_arm_upper_near + rotate: false + xy: 448, 53 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Buck/BuckMatthews_hand_far_1_fistBack + rotate: false + xy: 633, 439 + size: 37, 29 + orig: 67, 53 + offset: 16, 14 + index: -1 +Buck/BuckMatthews_hand_far_2_fistPalm + rotate: true + xy: 791, 168 + size: 32, 30 + orig: 67, 53 + offset: 18, 13 + index: -1 +Buck/BuckMatthews_hand_near_1_fistBack + rotate: true + xy: 986, 444 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +Buck/BuckMatthews_hand_near_2_fistPalm + rotate: true + xy: 891, 388 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +YoungBuck/YoungBuck_hand_far_2_fistPalm + rotate: true + xy: 891, 388 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +Buck/BuckMatthews_head_1 + rotate: true + xy: 127, 10 + size: 97, 113 + orig: 179, 179 + offset: 40, 16 + index: -1 +Buck/BuckMatthews_head_2_injured + rotate: false + xy: 127, 109 + size: 94, 117 + orig: 179, 179 + offset: 42, 14 + index: -1 +Buck/BuckMatthews_leg_lower_far + rotate: true + xy: 898, 593 + size: 35, 62 + orig: 64, 107 + offset: 15, 25 + index: -1 +Buck/BuckMatthews_leg_lower_near_2 + rotate: true + xy: 898, 593 + size: 35, 62 + orig: 64, 107 + offset: 15, 25 + index: -1 +Duck/DuckMatthews_leg_lower_far + rotate: true + xy: 898, 593 + size: 35, 62 + orig: 64, 107 + offset: 15, 25 + index: -1 +Duck/DuckMatthews_leg_lower_near_2 + rotate: true + xy: 898, 593 + size: 35, 62 + orig: 64, 107 + offset: 15, 25 + index: -1 +Buck/BuckMatthews_leg_lower_near_1 + rotate: false + xy: 518, 444 + size: 36, 59 + orig: 64, 107 + offset: 14, 24 + index: -1 +Buck/BuckMatthews_leg_upper_far + rotate: false + xy: 569, 234 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Duck/DuckMatthews_leg_upper_far + rotate: false + xy: 569, 234 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Truck/TruckMatthews_leg_upper_far + rotate: false + xy: 569, 234 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +YoungBuck/YoungBuck_leg_upper_far + rotate: false + xy: 569, 234 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Buck/BuckMatthews_leg_upper_near + rotate: true + xy: 609, 343 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Duck/DuckMatthews_leg_upper_near + rotate: true + xy: 609, 343 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Truck/TruckMatthews_leg_upper_near + rotate: true + xy: 609, 343 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +YoungBuck/YoungBuck_leg_upper_near + rotate: true + xy: 609, 343 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Buck/BuckMatthews_neck + rotate: false + xy: 789, 2 + size: 22, 19 + orig: 22, 19 + offset: 0, 0 + index: -1 +Buck/BuckMatthews_torso + rotate: false + xy: 242, 41 + size: 60, 66 + orig: 169, 149 + offset: 55, 36 + index: -1 +Buck/BuckMatthews_waist + rotate: false + xy: 486, 180 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +Chuck/ChuckMatthews_waist + rotate: false + xy: 486, 180 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +Duck/DuckMatthews_waist + rotate: false + xy: 486, 180 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +Truck/TruckMatthews_waist + rotate: false + xy: 486, 180 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +YoungBuck/YoungBuck_waist + rotate: false + xy: 486, 180 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +Chuck/ChuckMatthews_arm_lower_far + rotate: true + xy: 761, 202 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +Truck/TruckMatthews_arm_lower_far + rotate: true + xy: 761, 202 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +Chuck/ChuckMatthews_arm_lower_near + rotate: false + xy: 648, 35 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +Truck/TruckMatthews_arm_lower_near + rotate: false + xy: 648, 35 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +Chuck/ChuckMatthews_arm_upper_far + rotate: false + xy: 481, 115 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Chuck/ChuckMatthews_arm_upper_near + rotate: false + xy: 484, 53 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Chuck/ChuckMatthews_foot_far_1 + rotate: true + xy: 584, 123 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Chuck/ChuckMatthews_foot_near_1 + rotate: true + xy: 584, 123 + size: 56, 28 + orig: 107, 58 + offset: 24, 15 + index: -1 +Chuck/ChuckMatthews_hand_far_1_fistBack + rotate: false + xy: 860, 167 + size: 34, 28 + orig: 67, 53 + offset: 17, 15 + index: -1 +Chuck/ChuckMatthews_hand_far_2_fistPalm + rotate: false + xy: 896, 166 + size: 32, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +Chuck/ChuckMatthews_hand_near_1_fistBack + rotate: true + xy: 986, 403 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +Truck/TruckMatthews_hand_near_1_fistBack + rotate: true + xy: 986, 403 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +Chuck/ChuckMatthews_hand_near_2_fistPalm + rotate: false + xy: 719, 187 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +Chuck/ChuckMatthews_head_1 + rotate: false + xy: 335, 806 + size: 82, 95 + orig: 179, 179 + offset: 52, 11 + index: -1 +Chuck/ChuckMatthews_head_2_injured + rotate: false + xy: 818, 796 + size: 86, 99 + orig: 179, 179 + offset: 52, 7 + index: -1 +Chuck/ChuckMatthews_leg_lower_far + rotate: false + xy: 438, 483 + size: 36, 63 + orig: 64, 107 + offset: 13, 24 + index: -1 +Chuck/ChuckMatthews_leg_lower_near_2 + rotate: false + xy: 438, 483 + size: 36, 63 + orig: 64, 107 + offset: 13, 24 + index: -1 +Chuck/ChuckMatthews_leg_lower_near_1 + rotate: false + xy: 595, 450 + size: 36, 59 + orig: 64, 107 + offset: 15, 25 + index: -1 +Chuck/ChuckMatthews_leg_upper_far + rotate: false + xy: 604, 243 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Chuck/ChuckMatthews_leg_upper_near + rotate: false + xy: 604, 243 + size: 33, 57 + orig: 58, 89 + offset: 12, 16 + index: -1 +Chuck/ChuckMatthews_neck + rotate: true + xy: 962, 197 + size: 24, 21 + orig: 43, 36 + offset: 10, 8 + index: -1 +Chuck/ChuckMatthews_torso + rotate: false + xy: 223, 109 + size: 56, 62 + orig: 169, 149 + offset: 56, 38 + index: -1 +Commander/Commander-Firestrike_arm_lower_far + rotate: true + xy: 640, 123 + size: 16, 36 + orig: 84, 68 + offset: 32, 19 + index: -1 +Commander/Commander-Firestrike_arm_lower_near + rotate: true + xy: 678, 120 + size: 18, 40 + orig: 18, 40 + offset: 0, 0 + index: -1 +Commander/Commander-Firestrike_arm_upper_far + rotate: false + xy: 586, 2 + size: 22, 53 + orig: 97, 92 + offset: 36, 19 + index: -1 +Commander/Commander-Firestrike_arm_upper_near + rotate: false + xy: 617, 566 + size: 23, 53 + orig: 97, 92 + offset: 35, 18 + index: -1 +Commander/Commander-Firestrike_foot_far_1 + rotate: true + xy: 628, 181 + size: 41, 22 + orig: 106, 57 + offset: 32, 17 + index: -1 +Commander/Commander-Firestrike_foot_near_1 + rotate: true + xy: 628, 181 + size: 41, 22 + orig: 106, 57 + offset: 32, 17 + index: -1 +Commander/Commander-Firestrike_foot_far_2_bent + rotate: true + xy: 761, 89 + size: 38, 25 + orig: 99, 63 + offset: 19, 19 + index: -1 +Commander/Commander-Firestrike_foot_near_2_bent + rotate: true + xy: 761, 89 + size: 38, 25 + orig: 99, 63 + offset: 19, 19 + index: -1 +Commander/Commander-Firestrike_hand_far_1_fistBack + rotate: false + xy: 550, 713 + size: 21, 25 + orig: 66, 51 + offset: 21, 15 + index: -1 +Commander/Commander-Firestrike_hand_near_1_fistBack + rotate: false + xy: 550, 713 + size: 21, 25 + orig: 66, 51 + offset: 21, 15 + index: -1 +Commander/Commander-Firestrike_hand_far_2_fistPalm + rotate: true + xy: 1004, 172 + size: 20, 18 + orig: 66, 51 + offset: 21, 20 + index: -1 +Commander/Commander-Firestrike_hand_near_2_fistPalm + rotate: true + xy: 1004, 172 + size: 20, 18 + orig: 66, 51 + offset: 21, 20 + index: -1 +Commander/Commander-Firestrike_head_1 + rotate: false + xy: 2, 2 + size: 39, 55 + orig: 178, 178 + offset: 66, 20 + index: -1 +Commander/Commander-Firestrike_head_2_injured + rotate: false + xy: 2, 2 + size: 39, 55 + orig: 178, 178 + offset: 66, 20 + index: -1 +Commander/Commander-Firestrike_leg_lower_far + rotate: false + xy: 526, 585 + size: 22, 68 + orig: 63, 106 + offset: 20, 16 + index: -1 +Commander/Commander-Firestrike_leg_lower_near_2 + rotate: false + xy: 526, 585 + size: 22, 68 + orig: 63, 106 + offset: 20, 16 + index: -1 +Commander/Commander-Firestrike_leg_lower_near_1 + rotate: false + xy: 304, 173 + size: 23, 65 + orig: 63, 106 + offset: 22, 19 + index: -1 +Commander/Commander-Firestrike_leg_upper_far + rotate: true + xy: 618, 413 + size: 24, 52 + orig: 57, 88 + offset: 17, 19 + index: -1 +Commander/Commander-Firestrike_leg_upper_near + rotate: false + xy: 486, 2 + size: 23, 49 + orig: 57, 88 + offset: 15, 18 + index: -1 +Commander/Commander-Firestrike_neck + rotate: true + xy: 307, 2 + size: 42, 48 + orig: 56, 75 + offset: 8, 26 + index: -1 +Commander/Commander-Firestrike_torso + rotate: true + xy: 43, 8 + size: 49, 66 + orig: 49, 66 + offset: 0, 0 + index: -1 +Commander/Commander-Firestrike_waist + rotate: false + xy: 261, 612 + size: 36, 36 + orig: 92, 70 + offset: 29, 15 + index: -1 +Duck/DuckMatthews_arm_lower_far + rotate: false + xy: 762, 49 + size: 25, 38 + orig: 85, 69 + offset: 28, 16 + index: -1 +Duck/DuckMatthews_arm_lower_near + rotate: false + xy: 645, 79 + size: 29, 42 + orig: 85, 69 + offset: 27, 14 + index: -1 +Duck/DuckMatthews_arm_upper_far + rotate: true + xy: 555, 550 + size: 32, 60 + orig: 99, 93 + offset: 34, 16 + index: -1 +Duck/DuckMatthews_arm_upper_near + rotate: false + xy: 521, 505 + size: 32, 60 + orig: 99, 93 + offset: 34, 16 + index: -1 +Duck/DuckMatthews_hand_far_1_fistBack + rotate: true + xy: 925, 386 + size: 39, 31 + orig: 67, 53 + offset: 15, 13 + index: -1 +Duck/DuckMatthews_hand_far_2_fistPalm + rotate: false + xy: 719, 153 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +Duck/DuckMatthews_hand_near_1_fistBack + rotate: true + xy: 986, 362 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +Duck/DuckMatthews_hand_near_2_fistPalm + rotate: false + xy: 755, 168 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +Duck/DuckMatthews_head_1 + rotate: true + xy: 112, 348 + size: 118, 112 + orig: 179, 179 + offset: 40, 17 + index: -1 +Duck/DuckMatthews_head_2_injured + rotate: true + xy: 112, 228 + size: 118, 114 + orig: 179, 179 + offset: 41, 17 + index: -1 +Duck/DuckMatthews_leg_lower_near_1 + rotate: true + xy: 733, 492 + size: 36, 59 + orig: 64, 107 + offset: 14, 24 + index: -1 +Duck/DuckMatthews_neck + rotate: true + xy: 455, 751 + size: 23, 20 + orig: 43, 36 + offset: 11, 9 + index: -1 +Duck/DuckMatthews_torso + rotate: true + xy: 364, 580 + size: 60, 66 + orig: 169, 149 + offset: 55, 36 + index: -1 +Dummy/Dummy_arm_lower_far + rotate: false + xy: 763, 9 + size: 24, 38 + orig: 24, 38 + offset: 0, 0 + index: -1 +Dummy/Dummy_arm_lower_near + rotate: false + xy: 958, 424 + size: 26, 42 + orig: 26, 42 + offset: 0, 0 + index: -1 +Dummy/Dummy_arm_upper_far + rotate: true + xy: 672, 456 + size: 33, 59 + orig: 33, 59 + offset: 0, 0 + index: -1 +Dummy/Dummy_arm_upper_near + rotate: false + xy: 832, 464 + size: 33, 59 + orig: 33, 59 + offset: 0, 0 + index: -1 +Dummy/Dummy_foot_far_1 + rotate: false + xy: 690, 308 + size: 55, 27 + orig: 55, 27 + offset: 0, 0 + index: -1 +Dummy/Dummy_foot_far_2_bent + rotate: true + xy: 842, 334 + size: 52, 36 + orig: 52, 36 + offset: 0, 0 + index: -1 +Dummy/Dummy_foot_near_1 + rotate: true + xy: 733, 251 + size: 55, 26 + orig: 55, 26 + offset: 0, 0 + index: -1 +Dummy/Dummy_foot_near_2_bent + rotate: true + xy: 761, 254 + size: 52, 36 + orig: 52, 36 + offset: 0, 0 + index: -1 +Dummy/Dummy_hand_1_fistBack + rotate: false + xy: 929, 197 + size: 31, 24 + orig: 31, 24 + offset: 0, 0 + index: -1 +Dummy/Dummy_hand_2_fistPalm + rotate: false + xy: 884, 45 + size: 27, 25 + orig: 27, 25 + offset: 0, 0 + index: -1 +Dummy/Dummy_head_1 + rotate: false + xy: 668, 700 + size: 87, 87 + orig: 87, 87 + offset: 0, 0 + index: -1 +Dummy/Dummy_head_2_injured + rotate: false + xy: 757, 700 + size: 87, 87 + orig: 87, 87 + offset: 0, 0 + index: -1 +Dummy/Dummy_leg_lower_far + rotate: false + xy: 441, 177 + size: 43, 59 + orig: 43, 59 + offset: 0, 0 + index: -1 +Dummy/Dummy_leg_lower_near_1 + rotate: false + xy: 979, 633 + size: 43, 67 + orig: 43, 67 + offset: 0, 0 + index: -1 +Dummy/Dummy_leg_lower_near_2 + rotate: false + xy: 476, 506 + size: 43, 59 + orig: 43, 59 + offset: 0, 0 + index: -1 +Dummy/Dummy_leg_upper_far + rotate: true + xy: 470, 567 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +Dummy/Dummy_leg_upper_near + rotate: true + xy: 470, 567 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +Dummy/Dummy_neck + rotate: false + xy: 801, 202 + size: 23, 20 + orig: 23, 20 + offset: 0, 0 + index: -1 +Dummy/Dummy_torso + rotate: false + xy: 346, 483 + size: 56, 60 + orig: 56, 60 + offset: 0, 0 + index: -1 +Dummy/Dummy_waist + rotate: false + xy: 748, 338 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +Fletch/Fletch_arm_lower_far + rotate: true + xy: 826, 199 + size: 23, 38 + orig: 84, 67 + offset: 30, 16 + index: -1 +Fletch/Fletch_arm_lower_near + rotate: false + xy: 709, 79 + size: 24, 39 + orig: 84, 67 + offset: 29, 15 + index: -1 +Fletch/Fletch_arm_upper_far + rotate: false + xy: 867, 471 + size: 28, 59 + orig: 97, 92 + offset: 34, 15 + index: -1 +Fletch/Fletch_arm_upper_near + rotate: true + xy: 897, 457 + size: 28, 59 + orig: 97, 92 + offset: 34, 15 + index: -1 +Fletch/Fletch_foot_far_1 + rotate: true + xy: 559, 2 + size: 53, 25 + orig: 106, 57 + offset: 27, 13 + index: -1 +Fletch/Fletch_foot_near_1 + rotate: true + xy: 559, 2 + size: 53, 25 + orig: 106, 57 + offset: 27, 13 + index: -1 +Fletch/Fletch_foot_far_2_bent + rotate: true + xy: 993, 727 + size: 44, 29 + orig: 99, 63 + offset: 27, 15 + index: -1 +Fletch/Fletch_foot_near_2_bent + rotate: true + xy: 993, 727 + size: 44, 29 + orig: 99, 63 + offset: 27, 15 + index: -1 +Fletch/Fletch_hand_far_1_fistBack + rotate: false + xy: 580, 352 + size: 27, 26 + orig: 66, 51 + offset: 20, 15 + index: -1 +Fletch/Fletch_hand_near_1_fistBack + rotate: false + xy: 580, 352 + size: 27, 26 + orig: 66, 51 + offset: 20, 15 + index: -1 +Fletch/Fletch_hand_far_2_fistPalm + rotate: false + xy: 930, 166 + size: 32, 29 + orig: 66, 51 + offset: 17, 12 + index: -1 +Fletch/Fletch_hand_near_2_fistPalm + rotate: false + xy: 930, 166 + size: 32, 29 + orig: 66, 51 + offset: 17, 12 + index: -1 +Fletch/Fletch_head_1 + rotate: false + xy: 550, 621 + size: 90, 79 + orig: 178, 178 + offset: 38, 20 + index: -1 +Fletch/Fletch_head_2_injured + rotate: false + xy: 108, 468 + size: 90, 78 + orig: 179, 179 + offset: 38, 21 + index: -1 +Fletch/Fletch_leg_lower_far + rotate: false + xy: 858, 633 + size: 44, 70 + orig: 63, 106 + offset: 14, 15 + index: -1 +Fletch/Fletch_leg_lower_near_2 + rotate: false + xy: 858, 633 + size: 44, 70 + orig: 63, 106 + offset: 14, 15 + index: -1 +Fletch/Fletch_leg_lower_near_1 + rotate: true + xy: 364, 545 + size: 33, 67 + orig: 63, 106 + offset: 17, 19 + index: -1 +Fletch/Fletch_leg_upper_far + rotate: true + xy: 603, 302 + size: 39, 52 + orig: 57, 88 + offset: 14, 18 + index: -1 +Fletch/Fletch_leg_upper_near + rotate: false + xy: 317, 354 + size: 42, 51 + orig: 57, 88 + offset: 1, 19 + index: -1 +Fletch/Fletch_neck + rotate: true + xy: 573, 794 + size: 28, 21 + orig: 42, 35 + offset: 7, 7 + index: -1 +Fletch/Fletch_torso + rotate: false + xy: 200, 469 + size: 82, 77 + orig: 168, 148 + offset: 32, 36 + index: -1 +Fletch/Fletch_waist + rotate: true + xy: 226, 354 + size: 113, 89 + orig: 192, 146 + offset: 5, 48 + index: -1 +GabrielCaine/GabrielCaine_arm_lower_far + rotate: true + xy: 866, 197 + size: 24, 38 + orig: 85, 69 + offset: 29, 16 + index: -1 +GabrielCaine/GabrielCaine_arm_lower_near + rotate: false + xy: 948, 260 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +GabrielCaine/GabrielCaine_arm_upper_far + rotate: true + xy: 681, 530 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +GabrielCaine/GabrielCaine_arm_upper_near + rotate: true + xy: 743, 530 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +GabrielCaine/GabrielCaine_foot_far_1 + rotate: true + xy: 448, 418 + size: 63, 28 + orig: 107, 58 + offset: 24, 14 + index: -1 +GabrielCaine/GabrielCaine_foot_near_1 + rotate: true + xy: 448, 418 + size: 63, 28 + orig: 107, 58 + offset: 24, 14 + index: -1 +GabrielCaine/GabrielCaine_foot_far_2_bent + rotate: true + xy: 261, 548 + size: 61, 36 + orig: 101, 64 + offset: 19, 13 + index: -1 +GabrielCaine/GabrielCaine_foot_near_2_bent + rotate: true + xy: 261, 548 + size: 61, 36 + orig: 101, 64 + offset: 19, 13 + index: -1 +GabrielCaine/GabrielCaine_hand_far_1_fistBack + rotate: false + xy: 433, 548 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +GabrielCaine/GabrielCaine_hand_far_2_fistPalm + rotate: false + xy: 931, 133 + size: 32, 31 + orig: 67, 53 + offset: 18, 14 + index: -1 +GabrielCaine/GabrielCaine_hand_near_1_fistBack + rotate: false + xy: 640, 141 + size: 39, 34 + orig: 67, 53 + offset: 15, 13 + index: -1 +GabrielCaine/GabrielCaine_hand_near_2_fistPalm + rotate: false + xy: 985, 226 + size: 32, 31 + orig: 67, 53 + offset: 18, 14 + index: -1 +GabrielCaine/GabrielCaine_head_1 + rotate: false + xy: 370, 680 + size: 83, 94 + orig: 179, 179 + offset: 48, 15 + index: -1 +GabrielCaine/GabrielCaine_head_2_injured + rotate: false + xy: 906, 702 + size: 85, 93 + orig: 179, 179 + offset: 48, 16 + index: -1 +GabrielCaine/GabrielCaine_leg_lower_far + rotate: false + xy: 478, 442 + size: 38, 62 + orig: 64, 107 + offset: 10, 22 + index: -1 +GabrielCaine/GabrielCaine_leg_lower_near_2 + rotate: false + xy: 478, 442 + size: 38, 62 + orig: 64, 107 + offset: 10, 22 + index: -1 +GabrielCaine/GabrielCaine_leg_lower_near_1 + rotate: true + xy: 141, 785 + size: 38, 64 + orig: 64, 107 + offset: 13, 21 + index: -1 +GabrielCaine/GabrielCaine_leg_upper_far + rotate: false + xy: 846, 705 + size: 58, 89 + orig: 58, 89 + offset: 0, 0 + index: -1 +GabrielCaine/GabrielCaine_leg_upper_near + rotate: false + xy: 958, 368 + size: 26, 54 + orig: 58, 89 + offset: 16, 17 + index: -1 +GabrielCaine/GabrielCaine_torso + rotate: false + xy: 299, 585 + size: 63, 65 + orig: 169, 149 + offset: 54, 36 + index: -1 +GabrielCaine/GabrielCaine_waist + rotate: false + xy: 511, 2 + size: 46, 48 + orig: 93, 71 + offset: 24, 12 + index: -1 +MetalMan-Blue/MetalMan-Blue_arm_lower_far + rotate: true + xy: 964, 168 + size: 24, 38 + orig: 24, 38 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_arm_lower_near + rotate: false + xy: 996, 318 + size: 26, 42 + orig: 26, 42 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_arm_upper_far + rotate: true + xy: 672, 421 + size: 33, 59 + orig: 33, 59 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_arm_upper_near + rotate: true + xy: 672, 421 + size: 33, 59 + orig: 33, 59 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_foot_far_1 + rotate: true + xy: 958, 468 + size: 55, 26 + orig: 55, 26 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_foot_far_2_bent + rotate: false + xy: 839, 251 + size: 52, 36 + orig: 52, 36 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_foot_near_2_bent + rotate: false + xy: 839, 251 + size: 52, 36 + orig: 52, 36 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_foot_near_1 + rotate: true + xy: 914, 303 + size: 55, 26 + orig: 55, 26 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_hand_1_fistBack + rotate: true + xy: 820, 101 + size: 31, 24 + orig: 31, 24 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_hand_2_fistPalm + rotate: false + xy: 884, 18 + size: 27, 25 + orig: 27, 25 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_head_1 + rotate: false + xy: 642, 611 + size: 87, 87 + orig: 87, 87 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_head_2_injured + rotate: false + xy: 731, 611 + size: 87, 87 + orig: 87, 87 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_leg_lower_far + rotate: true + xy: 642, 566 + size: 43, 59 + orig: 43, 59 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_leg_lower_near_1 + rotate: false + xy: 979, 564 + size: 43, 67 + orig: 43, 67 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_leg_lower_near_2 + rotate: true + xy: 703, 566 + size: 43, 59 + orig: 43, 59 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_leg_upper_far + rotate: false + xy: 942, 304 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_leg_upper_near + rotate: false + xy: 942, 304 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_neck + rotate: true + xy: 914, 82 + size: 23, 20 + orig: 23, 20 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_torso + rotate: false + xy: 350, 421 + size: 56, 60 + orig: 56, 60 + offset: 0, 0 + index: -1 +MetalMan-Blue/MetalMan-Blue_waist + rotate: false + xy: 795, 341 + size: 45, 45 + orig: 45, 45 + offset: 0, 0 + index: -1 +PamelaFrost-02/PamelaFrost-02_arm_lower_far + rotate: true + xy: 482, 352 + size: 21, 38 + orig: 85, 69 + offset: 31, 16 + index: -1 +PamelaFrost-05/PamelaFrost-05_arm_lower_far + rotate: true + xy: 482, 352 + size: 21, 38 + orig: 85, 69 + offset: 31, 16 + index: -1 +PamelaFrost-02/PamelaFrost-02_arm_lower_near + rotate: true + xy: 913, 360 + size: 24, 43 + orig: 85, 69 + offset: 30, 13 + index: -1 +PamelaFrost-05/PamelaFrost-05_arm_lower_near + rotate: true + xy: 913, 360 + size: 24, 43 + orig: 85, 69 + offset: 30, 13 + index: -1 +PamelaFrost-02/PamelaFrost-02_arm_upper_far + rotate: false + xy: 591, 65 + size: 24, 56 + orig: 99, 93 + offset: 37, 17 + index: -1 +PamelaFrost-02/PamelaFrost-02_arm_upper_near + rotate: false + xy: 614, 123 + size: 24, 56 + orig: 99, 93 + offset: 37, 17 + index: -1 +PamelaFrost-02/PamelaFrost-02_foot_far_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-02/PamelaFrost-02_foot_near_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-03/PamelaFrost-03_foot_far_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-03/PamelaFrost-03_foot_near_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-04/PamelaFrost-04_foot_far_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-04/PamelaFrost-04_foot_near_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-05/PamelaFrost-05_foot_far_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-05/PamelaFrost-05_foot_near_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost/PamelaFrost_foot_far_1 + rotate: false + xy: 748, 308 + size: 54, 28 + orig: 107, 58 + offset: 26, 15 + index: -1 +PamelaFrost-02/PamelaFrost-02_foot_far_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-02/PamelaFrost-02_foot_near_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-03/PamelaFrost-03_foot_far_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-03/PamelaFrost-03_foot_near_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-04/PamelaFrost-04_foot_far_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-04/PamelaFrost-04_foot_near_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost/PamelaFrost_foot_far_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost/PamelaFrost_foot_near_2_bent + rotate: true + xy: 610, 9 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-02/PamelaFrost-02_hand_far_1_fistBack + rotate: true + xy: 788, 97 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-02/PamelaFrost-02_hand_far_2_fistPalm + rotate: false + xy: 846, 104 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-02/PamelaFrost-02_hand_near_2_fistPalm + rotate: false + xy: 846, 104 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-02/PamelaFrost-02_hand_near_1_fistBack + rotate: true + xy: 789, 60 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-02/PamelaFrost-02_head_1 + rotate: true + xy: 2, 468 + size: 142, 104 + orig: 179, 179 + offset: 22, 14 + index: -1 +PamelaFrost-02/PamelaFrost-02_head_2_injured + rotate: false + xy: 484, 918 + size: 142, 104 + orig: 179, 179 + offset: 23, 14 + index: -1 +PamelaFrost-02/PamelaFrost-02_leg_lower_far + rotate: false + xy: 424, 286 + size: 33, 64 + orig: 64, 107 + offset: 17, 21 + index: -1 +PamelaFrost-02/PamelaFrost-02_leg_lower_near_1 + rotate: false + xy: 450, 352 + size: 30, 64 + orig: 64, 107 + offset: 17, 22 + index: -1 +PamelaFrost-02/PamelaFrost-02_leg_lower_near_2 + rotate: false + xy: 459, 286 + size: 33, 64 + orig: 64, 107 + offset: 17, 21 + index: -1 +PamelaFrost-02/PamelaFrost-02_leg_upper_far + rotate: true + xy: 555, 511 + size: 37, 59 + orig: 58, 89 + offset: 8, 18 + index: -1 +PamelaFrost-02/PamelaFrost-02_leg_upper_near + rotate: true + xy: 733, 454 + size: 36, 59 + orig: 58, 89 + offset: 9, 18 + index: -1 +PamelaFrost-02/PamelaFrost-02_neck + rotate: false + xy: 993, 702 + size: 22, 23 + orig: 43, 36 + offset: 11, 8 + index: -1 +PamelaFrost-02/PamelaFrost-02_torso + rotate: false + xy: 329, 177 + size: 54, 61 + orig: 169, 149 + offset: 61, 39 + index: -1 +PamelaFrost-02/PamelaFrost-02_waist + rotate: true + xy: 534, 181 + size: 48, 38 + orig: 93, 71 + offset: 21, 17 + index: -1 +PamelaFrost-03/PamelaFrost-03_arm_lower_far + rotate: false + xy: 696, 182 + size: 21, 38 + orig: 85, 69 + offset: 31, 16 + index: -1 +PamelaFrost-04/PamelaFrost-04_arm_lower_far + rotate: false + xy: 696, 182 + size: 21, 38 + orig: 85, 69 + offset: 31, 16 + index: -1 +PamelaFrost/PamelaFrost_arm_lower_far + rotate: false + xy: 696, 182 + size: 21, 38 + orig: 85, 69 + offset: 31, 16 + index: -1 +PamelaFrost-03/PamelaFrost-03_arm_lower_near + rotate: false + xy: 922, 258 + size: 24, 43 + orig: 85, 69 + offset: 30, 13 + index: -1 +PamelaFrost-04/PamelaFrost-04_arm_lower_near + rotate: false + xy: 922, 258 + size: 24, 43 + orig: 85, 69 + offset: 30, 13 + index: -1 +PamelaFrost-03/PamelaFrost-03_arm_upper_far + rotate: true + xy: 522, 352 + size: 26, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost-04/PamelaFrost-04_arm_upper_far + rotate: true + xy: 522, 352 + size: 26, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost-03/PamelaFrost-03_arm_upper_near + rotate: false + xy: 617, 65 + size: 26, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost-04/PamelaFrost-04_arm_upper_near + rotate: false + xy: 617, 65 + size: 26, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost/PamelaFrost_arm_upper_near + rotate: false + xy: 617, 65 + size: 26, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost-03/PamelaFrost-03_hand_far_1_fistBack + rotate: false + xy: 823, 135 + size: 34, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-04/PamelaFrost-04_hand_far_1_fistBack + rotate: false + xy: 823, 135 + size: 34, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-03/PamelaFrost-03_hand_far_2_fistPalm + rotate: true + xy: 884, 72 + size: 30, 28 + orig: 67, 53 + offset: 19, 14 + index: -1 +PamelaFrost-03/PamelaFrost-03_hand_near_1_fistBack + rotate: true + xy: 789, 23 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-04/PamelaFrost-04_hand_near_1_fistBack + rotate: true + xy: 789, 23 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost/PamelaFrost_hand_near_1_fistBack + rotate: true + xy: 789, 23 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-03/PamelaFrost-03_hand_near_2_fistPalm + rotate: false + xy: 879, 104 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-03/PamelaFrost-03_head_1 + rotate: false + xy: 207, 776 + size: 126, 125 + orig: 179, 179 + offset: 31, 15 + index: -1 +PamelaFrost-03/PamelaFrost-03_head_2_injured + rotate: true + xy: 892, 897 + size: 125, 128 + orig: 179, 179 + offset: 32, 13 + index: -1 +PamelaFrost-03/PamelaFrost-03_leg_lower_far + rotate: false + xy: 494, 288 + size: 33, 62 + orig: 64, 107 + offset: 16, 23 + index: -1 +PamelaFrost-03/PamelaFrost-03_leg_lower_near_2 + rotate: false + xy: 494, 288 + size: 33, 62 + orig: 64, 107 + offset: 16, 23 + index: -1 +PamelaFrost-03/PamelaFrost-03_leg_lower_near_1 + rotate: true + xy: 898, 525 + size: 30, 60 + orig: 64, 107 + offset: 17, 24 + index: -1 +PamelaFrost-03/PamelaFrost-03_leg_upper_far + rotate: false + xy: 556, 450 + size: 37, 59 + orig: 58, 89 + offset: 8, 18 + index: -1 +PamelaFrost-04/PamelaFrost-04_leg_upper_far + rotate: false + xy: 556, 450 + size: 37, 59 + orig: 58, 89 + offset: 8, 18 + index: -1 +PamelaFrost-03/PamelaFrost-03_leg_upper_near + rotate: false + xy: 794, 464 + size: 36, 59 + orig: 58, 89 + offset: 9, 18 + index: -1 +PamelaFrost-04/PamelaFrost-04_leg_upper_near + rotate: false + xy: 794, 464 + size: 36, 59 + orig: 58, 89 + offset: 9, 18 + index: -1 +PamelaFrost-03/PamelaFrost-03_neck + rotate: false + xy: 912, 107 + size: 22, 24 + orig: 43, 36 + offset: 11, 8 + index: -1 +PamelaFrost-04/PamelaFrost-04_neck + rotate: false + xy: 912, 107 + size: 22, 24 + orig: 43, 36 + offset: 11, 8 + index: -1 +PamelaFrost-03/PamelaFrost-03_torso + rotate: false + xy: 351, 115 + size: 54, 60 + orig: 169, 149 + offset: 61, 39 + index: -1 +PamelaFrost-03/PamelaFrost-03_waist + rotate: true + xy: 799, 254 + size: 48, 38 + orig: 93, 71 + offset: 21, 17 + index: -1 +PamelaFrost-04/PamelaFrost-04_waist + rotate: true + xy: 799, 254 + size: 48, 38 + orig: 93, 71 + offset: 21, 17 + index: -1 +PamelaFrost-05/PamelaFrost-05_waist + rotate: true + xy: 799, 254 + size: 48, 38 + orig: 93, 71 + offset: 21, 17 + index: -1 +PamelaFrost/PamelaFrost_waist + rotate: true + xy: 799, 254 + size: 48, 38 + orig: 93, 71 + offset: 21, 17 + index: -1 +PamelaFrost-04/PamelaFrost-04_hand_far_2_fistPalm + rotate: true + xy: 821, 68 + size: 31, 28 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-04/PamelaFrost-04_hand_near_2_fistPalm + rotate: true + xy: 821, 35 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-04/PamelaFrost-04_head_1 + rotate: false + xy: 141, 650 + size: 125, 124 + orig: 179, 179 + offset: 32, 15 + index: -1 +PamelaFrost-04/PamelaFrost-04_head_2_injured + rotate: true + xy: 761, 897 + size: 125, 129 + orig: 179, 179 + offset: 32, 12 + index: -1 +PamelaFrost-04/PamelaFrost-04_leg_lower_far + rotate: false + xy: 517, 116 + size: 33, 62 + orig: 64, 107 + offset: 16, 23 + index: -1 +PamelaFrost-04/PamelaFrost-04_leg_lower_near_2 + rotate: false + xy: 517, 116 + size: 33, 62 + orig: 64, 107 + offset: 16, 23 + index: -1 +PamelaFrost-04/PamelaFrost-04_leg_lower_near_1 + rotate: true + xy: 556, 418 + size: 30, 60 + orig: 64, 107 + offset: 17, 24 + index: -1 +PamelaFrost-04/PamelaFrost-04_torso + rotate: false + xy: 385, 177 + size: 54, 61 + orig: 169, 149 + offset: 61, 39 + index: -1 +PamelaFrost-05/PamelaFrost-05_arm_upper_far + rotate: false + xy: 669, 244 + size: 24, 56 + orig: 99, 93 + offset: 37, 17 + index: -1 +PamelaFrost-05/PamelaFrost-05_arm_upper_near + rotate: true + xy: 761, 228 + size: 24, 56 + orig: 99, 93 + offset: 37, 17 + index: -1 +PamelaFrost-05/PamelaFrost-05_foot_far_2_bent + rotate: true + xy: 695, 252 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-05/PamelaFrost-05_foot_near_2_bent + rotate: true + xy: 695, 252 + size: 54, 36 + orig: 101, 64 + offset: 20, 12 + index: -1 +PamelaFrost-05/PamelaFrost-05_hand_far_1_fistBack + rotate: false + xy: 895, 135 + size: 34, 29 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-05/PamelaFrost-05_hand_far_2_fistPalm + rotate: false + xy: 852, 43 + size: 30, 28 + orig: 67, 53 + offset: 19, 14 + index: -1 +PamelaFrost-05/PamelaFrost-05_hand_near_1_fistBack + rotate: false + xy: 823, 167 + size: 35, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost-05/PamelaFrost-05_hand_near_2_fistPalm + rotate: true + xy: 821, 2 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost-05/PamelaFrost-05_head_1 + rotate: true + xy: 596, 791 + size: 106, 109 + orig: 179, 179 + offset: 39, 9 + index: -1 +PamelaFrost-05/PamelaFrost-05_head_2_injured + rotate: true + xy: 707, 789 + size: 106, 109 + orig: 179, 179 + offset: 39, 9 + index: -1 +PamelaFrost-05/PamelaFrost-05_leg_lower_far + rotate: false + xy: 520, 52 + size: 33, 62 + orig: 64, 107 + offset: 16, 25 + index: -1 +PamelaFrost-05/PamelaFrost-05_leg_lower_near_2 + rotate: false + xy: 520, 52 + size: 33, 62 + orig: 64, 107 + offset: 16, 25 + index: -1 +PamelaFrost-05/PamelaFrost-05_leg_lower_near_1 + rotate: true + xy: 733, 421 + size: 31, 60 + orig: 64, 107 + offset: 17, 25 + index: -1 +PamelaFrost-05/PamelaFrost-05_leg_upper_far + rotate: false + xy: 633, 470 + size: 37, 59 + orig: 58, 89 + offset: 8, 18 + index: -1 +PamelaFrost-05/PamelaFrost-05_leg_upper_near + rotate: false + xy: 443, 115 + size: 36, 60 + orig: 58, 89 + offset: 9, 16 + index: -1 +PamelaFrost-05/PamelaFrost-05_neck + rotate: true + xy: 999, 144 + size: 22, 23 + orig: 43, 36 + offset: 11, 9 + index: -1 +PamelaFrost-05/PamelaFrost-05_torso + rotate: false + xy: 356, 54 + size: 54, 59 + orig: 169, 149 + offset: 61, 41 + index: -1 +PamelaFrost/PamelaFrost_arm_lower_near + rotate: true + xy: 877, 223 + size: 24, 42 + orig: 85, 69 + offset: 29, 14 + index: -1 +PamelaFrost/PamelaFrost_arm_upper_far + rotate: true + xy: 819, 224 + size: 25, 56 + orig: 99, 93 + offset: 35, 17 + index: -1 +PamelaFrost/PamelaFrost_foot_near_1 + rotate: false + xy: 895, 427 + size: 54, 28 + orig: 107, 58 + offset: 25, 15 + index: -1 +PamelaFrost/PamelaFrost_hand_far_1_fistBack + rotate: false + xy: 859, 135 + size: 34, 30 + orig: 67, 53 + offset: 17, 15 + index: -1 +PamelaFrost/PamelaFrost_hand_far_2_fistPalm + rotate: false + xy: 852, 13 + size: 30, 28 + orig: 67, 53 + offset: 19, 14 + index: -1 +PamelaFrost/PamelaFrost_hand_near_2_fistPalm + rotate: false + xy: 851, 73 + size: 31, 29 + orig: 67, 53 + offset: 18, 14 + index: -1 +PamelaFrost/PamelaFrost_head_1 + rotate: false + xy: 345, 907 + size: 137, 115 + orig: 179, 179 + offset: 25, 10 + index: -1 +PamelaFrost/PamelaFrost_head_2_injured + rotate: false + xy: 207, 903 + size: 136, 119 + orig: 179, 179 + offset: 25, 6 + index: -1 +PamelaFrost/PamelaFrost_leg_lower_far + rotate: false + xy: 519, 380 + size: 33, 62 + orig: 64, 107 + offset: 17, 24 + index: -1 +PamelaFrost/PamelaFrost_leg_lower_near_1 + rotate: false + xy: 552, 119 + size: 30, 60 + orig: 64, 107 + offset: 17, 25 + index: -1 +PamelaFrost/PamelaFrost_leg_lower_near_2 + rotate: true + xy: 617, 531 + size: 33, 62 + orig: 64, 107 + offset: 16, 23 + index: -1 +PamelaFrost/PamelaFrost_leg_upper_far + rotate: true + xy: 672, 491 + size: 37, 59 + orig: 58, 89 + offset: 8, 18 + index: -1 +PamelaFrost/PamelaFrost_leg_upper_near + rotate: true + xy: 897, 487 + size: 36, 59 + orig: 58, 89 + offset: 9, 18 + index: -1 +PamelaFrost/PamelaFrost_neck + rotate: true + xy: 999, 120 + size: 22, 23 + orig: 43, 36 + offset: 11, 9 + index: -1 +PamelaFrost/PamelaFrost_torso + rotate: false + xy: 470, 594 + size: 54, 59 + orig: 169, 149 + offset: 61, 40 + index: -1 +StumpyPete/StumpyPete_arm_lower_far + rotate: false + xy: 884, 293 + size: 28, 43 + orig: 85, 69 + offset: 27, 12 + index: -1 +StumpyPete/StumpyPete_arm_lower_near + rotate: true + xy: 977, 259 + size: 28, 42 + orig: 85, 69 + offset: 27, 13 + index: -1 +StumpyPete/StumpyPete_arm_upper_far + rotate: false + xy: 529, 293 + size: 37, 57 + orig: 99, 93 + offset: 28, 20 + index: -1 +StumpyPete/StumpyPete_arm_upper_near + rotate: true + xy: 674, 382 + size: 37, 57 + orig: 99, 93 + offset: 28, 20 + index: -1 +StumpyPete/StumpyPete_foot_far_1 + rotate: true + xy: 460, 2 + size: 49, 24 + orig: 107, 58 + offset: 27, 14 + index: -1 +StumpyPete/StumpyPete_foot_far_2_bent + rotate: true + xy: 880, 338 + size: 48, 31 + orig: 101, 64 + offset: 27, 14 + index: -1 +StumpyPete/StumpyPete_foot_near_1 + rotate: false + xy: 552, 116 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +StumpyPete/StumpyPete_foot_near_2_bent + rotate: false + xy: 552, 116 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +StumpyPete/StumpyPete_hand_far_1_fistBack + rotate: false + xy: 689, 2 + size: 34, 31 + orig: 67, 53 + offset: 17, 15 + index: -1 +StumpyPete/StumpyPete_hand_far_2_fistPalm + rotate: true + xy: 954, 223 + size: 34, 29 + orig: 67, 53 + offset: 18, 15 + index: -1 +StumpyPete/StumpyPete_hand_near_2_fistPalm + rotate: true + xy: 954, 223 + size: 34, 29 + orig: 67, 53 + offset: 18, 15 + index: -1 +StumpyPete/StumpyPete_hand_near_1_fistBack + rotate: false + xy: 720, 120 + size: 34, 31 + orig: 67, 53 + offset: 17, 15 + index: -1 +StumpyPete/StumpyPete_head_1 + rotate: false + xy: 484, 824 + size: 110, 92 + orig: 179, 179 + offset: 33, 8 + index: -1 +StumpyPete/StumpyPete_head_2_injured + rotate: true + xy: 228, 240 + size: 112, 92 + orig: 179, 179 + offset: 33, 8 + index: -1 +StumpyPete/StumpyPete_leg_lower_far + rotate: true + xy: 764, 566 + size: 43, 56 + orig: 64, 107 + offset: 14, 26 + index: -1 +StumpyPete/StumpyPete_leg_lower_near_1 + rotate: true + xy: 370, 642 + size: 36, 75 + orig: 64, 107 + offset: 14, 9 + index: -1 +StumpyPete/StumpyPete_leg_lower_near_2 + rotate: false + xy: 820, 623 + size: 36, 75 + orig: 64, 107 + offset: 14, 9 + index: -1 +StumpyPete/StumpyPete_leg_upper_far + rotate: false + xy: 574, 181 + size: 25, 51 + orig: 58, 89 + offset: 16, 17 + index: -1 +StumpyPete/StumpyPete_leg_upper_near + rotate: false + xy: 601, 181 + size: 25, 51 + orig: 58, 89 + offset: 16, 17 + index: -1 +StumpyPete/StumpyPete_neck + rotate: false + xy: 996, 289 + size: 26, 27 + orig: 43, 36 + offset: 9, 6 + index: -1 +StumpyPete/StumpyPete_torso + rotate: false + xy: 228, 173 + size: 74, 65 + orig: 169, 149 + offset: 51, 34 + index: -1 +StumpyPete/StumpyPete_waist + rotate: true + xy: 317, 407 + size: 69, 31 + orig: 93, 71 + offset: 18, 15 + index: -1 +Truck/TruckMatthews_arm_upper_far + rotate: false + xy: 533, 231 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Truck/TruckMatthews_arm_upper_near + rotate: false + xy: 555, 57 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +Truck/TruckMatthews_foot_far_2_bent + rotate: false + xy: 795, 424 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Truck/TruckMatthews_foot_near_2_bent + rotate: false + xy: 795, 424 + size: 57, 38 + orig: 101, 64 + offset: 17, 12 + index: -1 +Truck/TruckMatthews_hand_far_1_fistBack + rotate: false + xy: 648, 2 + size: 39, 31 + orig: 67, 53 + offset: 15, 13 + index: -1 +Truck/TruckMatthews_hand_far_2_fistPalm + rotate: false + xy: 985, 194 + size: 32, 30 + orig: 67, 53 + offset: 18, 13 + index: -1 +Truck/TruckMatthews_hand_near_2_fistPalm + rotate: false + xy: 965, 135 + size: 32, 31 + orig: 67, 53 + offset: 18, 13 + index: -1 +Truck/TruckMatthews_head_1 + rotate: true + xy: 477, 740 + size: 82, 94 + orig: 179, 179 + offset: 48, 11 + index: -1 +Truck/TruckMatthews_head_2_injured + rotate: false + xy: 906, 797 + size: 85, 98 + orig: 179, 179 + offset: 47, 7 + index: -1 +Truck/TruckMatthews_leg_lower_far + rotate: false + xy: 361, 354 + size: 36, 65 + orig: 64, 107 + offset: 12, 23 + index: -1 +Truck/TruckMatthews_leg_lower_near_2 + rotate: false + xy: 361, 354 + size: 36, 65 + orig: 64, 107 + offset: 12, 23 + index: -1 +Truck/TruckMatthews_leg_lower_near_1 + rotate: false + xy: 860, 568 + size: 36, 63 + orig: 64, 107 + offset: 14, 23 + index: -1 +Truck/TruckMatthews_neck + rotate: false + xy: 936, 110 + size: 24, 21 + orig: 43, 36 + offset: 10, 8 + index: -1 +Truck/TruckMatthews_torso + rotate: false + xy: 284, 478 + size: 60, 66 + orig: 169, 149 + offset: 55, 36 + index: -1 +TurboTed/TurboTed_arm_lower_far + rotate: false + xy: 706, 37 + size: 28, 40 + orig: 28, 40 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_arm_lower_near + rotate: true + xy: 719, 221 + size: 28, 40 + orig: 28, 40 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_arm_upper_far + rotate: true + xy: 322, 240 + size: 44, 59 + orig: 44, 59 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_arm_upper_near + rotate: true + xy: 383, 240 + size: 44, 60 + orig: 44, 60 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_foot_far_1 + rotate: true + xy: 993, 835 + size: 60, 29 + orig: 60, 29 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_foot_far_2_bent + rotate: false + xy: 554, 380 + size: 59, 36 + orig: 59, 36 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_foot_near_2_bent + rotate: false + xy: 554, 380 + size: 59, 36 + orig: 59, 36 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_foot_near_1 + rotate: true + xy: 993, 773 + size: 60, 29 + orig: 60, 29 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_hand_1_fistBack + rotate: true + xy: 756, 129 + size: 37, 29 + orig: 37, 29 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_hand_2_fistPalm + rotate: true + xy: 922, 223 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_head_1 + rotate: false + xy: 455, 655 + size: 93, 83 + orig: 93, 83 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_head_2_injured + rotate: false + xy: 573, 702 + size: 93, 87 + orig: 93, 87 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_leg_lower_far + rotate: false + xy: 399, 352 + size: 49, 64 + orig: 49, 64 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_leg_lower_near_1 + rotate: false + xy: 322, 286 + size: 49, 66 + orig: 49, 66 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_leg_lower_near_2 + rotate: false + xy: 373, 286 + size: 49, 64 + orig: 49, 64 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_leg_upper_far + rotate: false + xy: 969, 306 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_leg_upper_near + rotate: false + xy: 969, 306 + size: 25, 54 + orig: 25, 54 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_neck + rotate: true + xy: 695, 222 + size: 28, 22 + orig: 28, 22 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_torso + rotate: false + xy: 304, 46 + size: 50, 60 + orig: 50, 60 + offset: 0, 0 + index: -1 +TurboTed/TurboTed_waist + rotate: true + xy: 854, 424 + size: 38, 39 + orig: 38, 39 + offset: 0, 0 + index: -1 +YoungBuck/YoungBuck_arm_lower_near + rotate: false + xy: 677, 35 + size: 27, 42 + orig: 85, 69 + offset: 28, 14 + index: -1 +YoungBuck/YoungBuck_arm_upper_far + rotate: true + xy: 733, 385 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +YoungBuck/YoungBuck_arm_upper_near + rotate: true + xy: 795, 388 + size: 34, 60 + orig: 99, 93 + offset: 32, 16 + index: -1 +YoungBuck/YoungBuck_hand_far_1_fistBack + rotate: true + xy: 676, 79 + size: 39, 31 + orig: 67, 53 + offset: 15, 13 + index: -1 +YoungBuck/YoungBuck_hand_near_1_fistBack + rotate: false + xy: 652, 206 + size: 39, 36 + orig: 67, 53 + offset: 15, 13 + index: -1 +YoungBuck/YoungBuck_hand_near_2_fistPalm + rotate: false + xy: 787, 134 + size: 34, 32 + orig: 67, 53 + offset: 17, 12 + index: -1 +YoungBuck/YoungBuck_head_1 + rotate: true + xy: 2, 59 + size: 131, 123 + orig: 179, 179 + offset: 30, 10 + index: -1 +YoungBuck/YoungBuck_head_2_injured + rotate: false + xy: 628, 899 + size: 131, 123 + orig: 179, 179 + offset: 30, 10 + index: -1 +YoungBuck/YoungBuck_leg_lower_far + rotate: true + xy: 550, 584 + size: 35, 65 + orig: 64, 107 + offset: 14, 23 + index: -1 +YoungBuck/YoungBuck_leg_lower_near_1 + rotate: true + xy: 962, 526 + size: 36, 60 + orig: 64, 107 + offset: 14, 24 + index: -1 +YoungBuck/YoungBuck_leg_lower_near_2 + rotate: false + xy: 482, 375 + size: 35, 65 + orig: 64, 107 + offset: 14, 23 + index: -1 +YoungBuck/YoungBuck_torso + rotate: false + xy: 419, 839 + size: 63, 66 + orig: 169, 149 + offset: 54, 34 + index: -1 +sword_1 + rotate: false + xy: 114, 616 + size: 25, 207 + orig: 168, 289 + offset: 72, 34 + index: -1 +sword_2_swing + rotate: false + xy: 2, 612 + size: 110, 211 + orig: 253, 288 + offset: 72, 33 + index: -1 +sword_3_bigSwing + rotate: false + xy: 2, 825 + size: 203, 197 + orig: 333, 289 + offset: 57, 34 + index: -1 diff --git a/spine-ts/webgl/demos/assets/heroes.png b/spine-ts/webgl/demos/assets/heroes.png new file mode 100755 index 000000000..5ceac51d8 Binary files /dev/null and b/spine-ts/webgl/demos/assets/heroes.png differ diff --git a/spine-ts/webgl/demos/clipping.html b/spine-ts/webgl/demos/clipping.html new file mode 100644 index 000000000..5e936076d --- /dev/null +++ b/spine-ts/webgl/demos/clipping.html @@ -0,0 +1,24 @@ + + +Clipping - Spine Demo + + + + + + + +
+
+
+
+ Draw triangles +
+ + + + + \ No newline at end of file diff --git a/spine-ts/webgl/demos/clipping.js b/spine-ts/webgl/demos/clipping.js new file mode 100644 index 000000000..29d481838 --- /dev/null +++ b/spine-ts/webgl/demos/clipping.js @@ -0,0 +1,119 @@ +var clippingDemo = function(canvas, bgColor) { + var gl, renderer, assetManager; + var skeleton, state, bounds; + var timeKeeper; + var playButton, timeline, isPlaying = true, playTime = 0; + + var DEMO_NAME = "ClippingDemo"; + + if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); + + function init () { + canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; + gl = canvas.ctx.gl; + renderer = new spine.webgl.SceneRenderer(canvas, gl); + assetManager = spineDemos.assetManager; + var textureLoader = function(img) { return new spine.webgl.GLTexture(gl, img); }; + assetManager.loadTexture(DEMO_NAME, textureLoader, "atlas1.png"); + assetManager.loadText(DEMO_NAME, "atlas1.atlas"); + assetManager.loadJson(DEMO_NAME, "demos.json"); + timeKeeper = new spine.TimeKeeper(); + } + + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas1.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json")["spineboy"]); + skeleton = new spine.Skeleton(skeletonData); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + state.setAnimation(0, "portal", true); + state.apply(skeleton); + skeleton.updateWorldTransform(); + var offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + + renderer.camera.position.x = offset.x + bounds.x + 200; + renderer.camera.position.y = offset.y + bounds.y / 2 + 100; + + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; + + setupUI(); + } + + function setupUI() { + playButton = $("#clipping-playbutton"); + var playButtonUpdate = function () { + isPlaying = !isPlaying; + if (isPlaying) + playButton.addClass("pause").removeClass("play"); + else + playButton.addClass("play").removeClass("pause"); + } + playButton.click(playButtonUpdate); + playButton.addClass("pause"); + + timeline = $("#clipping-timeline").data("slider"); + timeline.changed = function (percent) { + if (isPlaying) playButton.click(); + if (!isPlaying) { + var animationDuration = state.getCurrent(0).animation.duration; + var time = animationDuration * percent; + state.update(time - playTime); + state.apply(skeleton); + skeleton.updateWorldTransform(); + playTime = time; + } + }; + + renderer.skeletonDebugRenderer.drawRegionAttachments = false; + renderer.skeletonDebugRenderer.drawClipping = false; + renderer.skeletonDebugRenderer.drawBones = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; + $("#clipping-drawtriangles").click(function() { + renderer.skeletonDebugRenderer.drawMeshHull = this.checked; + renderer.skeletonDebugRenderer.drawMeshTriangles = this.checked; + renderer.skeletonDebugRenderer.drawClipping = this.checked; + renderer.skeletonDebugRenderer.drawRegionAttachments = this.checked; + }) + } + + function render () { + timeKeeper.update(); + var delta = timeKeeper.delta; + + if (isPlaying) { + var animationDuration = state.getCurrent(0).animation.duration; + playTime += delta; + while (playTime >= animationDuration) + playTime -= animationDuration; + timeline.set(playTime / animationDuration); + + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + } + + renderer.camera.viewportWidth = bounds.x * 1.6; + renderer.camera.viewportHeight = bounds.y * 1.6; + renderer.resize(spine.webgl.ResizeMode.Fit); + + gl.clearColor(bgColor.r, bgColor.g, bgColor.b, bgColor.a); + gl.clear(gl.COLOR_BUFFER_BIT); + + renderer.begin(); + renderer.drawSkeleton(skeleton, true); + renderer.drawSkeletonDebug(skeleton, false, ["root"]); + renderer.end(); + } + + clippingDemo.loadingComplete = loadingComplete; + clippingDemo.render = render; + clippingDemo.DEMO_NAME = DEMO_NAME; + init(); +}; \ No newline at end of file diff --git a/spine-ts/webgl/demos/demos.css b/spine-ts/webgl/demos/demos.css index 343868faa..ad69fdd40 100644 --- a/spine-ts/webgl/demos/demos.css +++ b/spine-ts/webgl/demos/demos.css @@ -1,6 +1,5 @@ body, html { margin: 0; - height: 100%; font-family: Tahoma; font-size: 11pt; } @@ -12,16 +11,10 @@ br { content: ""; margin-top: 15px; } -.aspect { - margin-bottom: 15px; - max-width: 800px; - text-align: center; +h2 { + padding-top: 1em; } -.aspect div { - position: relative; - padding-bottom: 70.14%; -} -.aspect canvas { +canvas { position: absolute; top: 0; bottom: 0; @@ -29,8 +22,49 @@ br { right: 0; width: 100%; height: 100%; - border: 1px solid black; } + +.aspect { + position: relative; + width: 100%; +} + +.demo { + clear: both; +} +.demo-container { + float: left; + width: 58%; +} +.demo-text { + float: left; + width: 38%; + margin-left: 2%; + margin-right: 2%; +} + +.timeline, .timeline td:nth-child(2) { + width: 100%; +} + +.play { + background: black; + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3Cpath%20fill%3D%27%23F2F2F2%27%20d%3D%27M30.185%2C15.5L12.556%2C24.8V6.201L30.185%2C15.5z%27%2F%3E%3C%2Fsvg%3E"); + width: 40px; + height: 30px; +} +.pause { + background: black; + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3Cpath%20fill%3D%22%23F2F2F2%22%20d%3D%22M26.94%2C6.978v17.045h-5.249V6.978H26.94z%22%2F%3E%3Cpath%20fill%3D%22%23F2F2F2%22%20d%3D%22M18.975%2C6.978v17.045h-5.249V6.978H18.975z%22%2F%3E%3C%2Fsvg%3E"); + width: 40px; + height: 30px; + margin: 0; +} + +.checkbox { + display: inline; +} + .slider { width: 100%; max-width: 800px; @@ -38,12 +72,13 @@ br { text-align: left; transform: translateZ(0); background: #222; + display: inline-block; } .slider, .slider.filled span { height: 15px; border: 1px solid #c5c5c5; } -.slider div { +.slider div { position: absolute; top: -2px; width: 10px; @@ -56,7 +91,7 @@ br { .slider.filled { border: 0; } -.slider.filled div { +.slider.filled div { top: -1px; margin-left: 1px; } @@ -73,3 +108,15 @@ br { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } + +.overlay { + opacity: 1; + transition: opacity 0.5s ease; + z-index: 10; +} +.overlay-hide { + opacity: 0; +} +.overlay-label { + display: none; +} diff --git a/spine-ts/webgl/demos/demos.html b/spine-ts/webgl/demos/demos.html new file mode 100644 index 000000000..490a0c118 --- /dev/null +++ b/spine-ts/webgl/demos/demos.html @@ -0,0 +1,335 @@ + + +Spine: Demos + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

Spine versus sprite sheets

+
+
+
+
+
Spine
All animations, all frame rates
0.18 MB
+
Sprite sheet
1 second of animation @ 30FPS
3.39 MB = 18x larger!
+
+
+
+
+
+
Animation speed
+
 
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

Spine with frame-based animation

+
+
+ + + +
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+

Transitions and layering

+
+
+
+
Smooth
+
Abrupt
+
+
+
+
+
+
+
+ +
+
+
+
Animation speed
+
 
+
+
+
+
+
+
+
+
+
+
+

Mesh deformation

+
+
+ + + +
+
+
+
+
+
+ +
+ +
+
+
+
+ + +
+ Show bones +
+
+
+ + +
+ Show triangles +
+
+
+
+
+
+
+
+
+

Skins

+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ + +
+
+
+
+ + +
+ Random skins +
+
+
+
+
+
+
+
+
+

Inverse kinematics

+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+ Aim +
+
+
+ + +
+ Show bones +
+
+
+
+
+
+
+
+
+

Path constraints

+
+
+ + + +
+
+
+
+
+
+
+ + +
+ Show bones & paths +
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ Show bones & paths +
+
+
+
+
+
+
+
+
+

Clipping

+
+
+ + + +
+
+
+
+
+
+
+ + +
+ Show triangles +
+
+
+
+
+
+
+
+
+

Transform constraints

+
+
+ + + +
+
+
+
+
+
+
+ + +
+ Show bones & paths +
+
+
+
+
+
+
+
+
+
+
+
+
Rotation offset
+
 
+
+
+
+
Translation mix
+
 
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/spine-ts/webgl/demos/demos.js b/spine-ts/webgl/demos/demos.js new file mode 100644 index 000000000..97acf91ce --- /dev/null +++ b/spine-ts/webgl/demos/demos.js @@ -0,0 +1,85 @@ + +$(function () { + window.onerror = function(message, url, lineNo) { + alert("Error: " + message + "\n" + "URL:" + url + "\nLine: " + lineNo); + } + + + spineDemos.init(); + spineDemos.assetManager = new spine.SharedAssetManager("assets/"); + + var demos = [ + spritesheetsDemo, + imageChangesDemo, + transitionsDemo, + meshesDemo, + skinsDemo, + hoverboardDemo, + vineDemo, + clippingDemo, + stretchymanDemo, + tankDemo, + transformsDemo, + ]; + + var placeholders = document.getElementsByClassName("aspect"); + + for (var i = 0; i < demos.length; i++) + spineDemos.addDemo(demos[i], placeholders[i]); + + function resizeSliders () { + $(".slider").each(function () { + $(this).data("slider").resized(); + }); + } + + function windowResized () { + // Keep canvas from taking up whole screen. + $(".aspect").each(function () { + $(this).css("padding-bottom", Math.min(70.14, $(window).height() * 0.75 / $(this).width() * 100) + "%"); + }); + + // Swap controls when media query puts text below canvas. + var below = $("#below").is(':visible'); + $(".demo .description").each(function () { + var description = $(this); + var controls = description.children(".controls"); + if (below || description.hasClass("fullsize")) + description.prepend(controls); + else + description.append(controls); + }); + + resizeSliders(); + } + windowResized(); + $(window).resize(windowResized); + + $(".resize").click(function () { + var resizeButton = $(this); + var container = resizeButton.parent(); + var parent = container.parent(); + var overlayLabels = parent.find(".overlay-label"); + var description = parent.children(".description"); + var controls = description.children(".controls"); + + container.toggleClass("fullsize"); + resizeButton.toggleClass("checked"); + + var offset = parseFloat(overlayLabels.css("bottom")); + description.toggleClass("fullsize"); + if (description.hasClass("fullsize")) { + overlayLabels.css("bottom", offset * 1.666); + } else { + resizeSliders(); + overlayLabels.css("bottom", offset / 1.666); + } + setTimeout(function() { + windowResized(); + }, 500); + }); + + $(".checkbox-overlay").change(function () { + $(this).closest(".demo").find(".overlay").toggleClass("overlay-hide"); + }); +}); diff --git a/spine-ts/webgl/demos/hoverboard.html b/spine-ts/webgl/demos/hoverboard.html index 92b7fa1b7..8448c24ca 100644 --- a/spine-ts/webgl/demos/hoverboard.html +++ b/spine-ts/webgl/demos/hoverboard.html @@ -9,12 +9,16 @@
-
- Display Bones +
+ Display Bones
+ Aim
+ +
diff --git a/spine-ts/webgl/demos/hoverboard.js b/spine-ts/webgl/demos/hoverboard.js index ad8128c87..e41091088 100644 --- a/spine-ts/webgl/demos/hoverboard.js +++ b/spine-ts/webgl/demos/hoverboard.js @@ -1,15 +1,15 @@ -var hoverboardDemo = function(loadingComplete, bgColor) { +var hoverboardDemo = function(canvas, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); var COLOR_OUTER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.8); - var canvas, gl, renderer, input, assetManager; + var gl, renderer, input, assetManager; var skeleton, state, bounds; var timeKeeper, loadingScreen; var target = null; var hoverTargets = []; - var controlBones = ["hoverboard controller", "hip controller", "board target"]; + var controlBones = ["hoverboard controller", "hip controller", "board target", "crosshair"]; var coords = new spine.webgl.Vector3(), temp = new spine.webgl.Vector3(), temp2 = new spine.Vector2(), temp3 = new spine.webgl.Vector3(); var isPlaying = true; @@ -18,13 +18,8 @@ var hoverboardDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("hoverboard-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -34,46 +29,37 @@ var hoverboardDemo = function(loadingComplete, bgColor) { assetManager.loadJson(DEMO_NAME, "demos.json"); input = new spine.webgl.Input(canvas); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas1.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json")["spineboy-hover"]); - skeleton = new spine.Skeleton(skeletonData); - state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); - state.setAnimation(0, "idle", true); - state.apply(skeleton); - skeleton.updateWorldTransform(); - var offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - for (var i = 0; i < controlBones.length; i++) hoverTargets.push(null); + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas1.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json")["spineboy"]); + skeleton = new spine.Skeleton(skeletonData); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + state.setAnimation(0, "hoverboard", true); + state.apply(skeleton); + skeleton.updateWorldTransform(); + var offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + for (var i = 0; i < controlBones.length; i++) + hoverTargets.push(null); - renderer.camera.position.x = offset.x + bounds.x / 2; - renderer.camera.position.y = offset.y + bounds.y / 2; + renderer.camera.position.x = offset.x + bounds.x / 2; + renderer.camera.position.y = offset.y + bounds.y / 2; - renderer.skeletonDebugRenderer.drawMeshHull = false; - renderer.skeletonDebugRenderer.drawMeshTriangles = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; - setupUI(); - setupInput(); - - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + setupUI(); + setupInput(); } - function setupUI() { + function setupUI () { var checkbox = $("#hoverboard-drawbones"); renderer.skeletonDebugRenderer.drawRegionAttachments = false; renderer.skeletonDebugRenderer.drawPaths = false; @@ -82,9 +68,39 @@ var hoverboardDemo = function(loadingComplete, bgColor) { renderer.skeletonDebugRenderer.drawPaths = this.checked; renderer.skeletonDebugRenderer.drawBones = this.checked; }); + + var aimTrack = 1; + var shootAimTrack = 2; + var shootTrack = 3; + + $("#hoverboard-aim").change(function () { + if (!this.checked) + state.setEmptyAnimation(aimTrack, 0.2); + else { + state.setEmptyAnimation(aimTrack, 0); + state.addAnimation(aimTrack, "aim", true, 0).mixDuration = 0.2; + } + }); + + $("#hoverboard-shoot").click(function () { + state.setAnimation(shootAimTrack, "aim", true); + state.setAnimation(shootTrack, "shoot", false).listener = { + complete: function (trackIndex) { + state.setEmptyAnimation(shootAimTrack, 0.2); + state.clearTrack(shootTrack); + } + }; + }); + + $("#hoverboard-jump").click(function () { + state.setAnimation(aimTrack, "jump", false); + state.addEmptyAnimation(aimTrack, 0.5, 0); + if ($("#hoverboard-aim").prop("checked")) + state.addAnimation(aimTrack, "aim", true, 0.4).mixDuration = 0.2; + }); } - function setupInput (){ + function setupInput () { input.addListener({ down: function(x, y) { isPlaying = false; @@ -97,6 +113,7 @@ var hoverboardDemo = function(loadingComplete, bgColor) { } }, up: function(x, y) { + if (target && target.data.name == "crosshair") $("#hoverboard-shoot").click(); target = null; }, dragged: function(x, y) { @@ -154,9 +171,10 @@ var hoverboardDemo = function(loadingComplete, bgColor) { } renderer.end(); gl.lineWidth(1); - - loadingScreen.draw(true); } + hoverboardDemo.loadingComplete = loadingComplete; + hoverboardDemo.render = render; + hoverboardDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/imagechanges.html b/spine-ts/webgl/demos/imagechanges.html index fdec4dcfc..dfb86255f 100644 --- a/spine-ts/webgl/demos/imagechanges.html +++ b/spine-ts/webgl/demos/imagechanges.html @@ -9,15 +9,15 @@
-
+

diff --git a/spine-ts/webgl/demos/imagechanges.js b/spine-ts/webgl/demos/imagechanges.js index 90feb0a2d..e918027f4 100644 --- a/spine-ts/webgl/demos/imagechanges.js +++ b/spine-ts/webgl/demos/imagechanges.js @@ -1,4 +1,4 @@ -var imageChangesDemo = function(loadingComplete, bgColor) { +var imageChangesDemo = function(canvas, bgColor) { var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var canvas, gl, renderer, input, assetManager; @@ -13,13 +13,8 @@ var imageChangesDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("imagechanges-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -28,21 +23,12 @@ var imageChangesDemo = function(loadingComplete, bgColor) { assetManager.loadText(DEMO_NAME, "atlas1.atlas"); assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - skeletons["Alien"] = loadSkeleton("alien", "death", ["head", "splat01"]); - skeletons["Dragon"] = loadSkeleton("dragon", "flying", ["R_wing"]) - setupUI(); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + function loadingComplete () { + skeletons["Alien"] = loadSkeleton("alien", "death", ["head", "splat-fg", "splat-bg"]); + skeletons["Dragon"] = loadSkeleton("dragon", "flying", ["R_wing"]) + setupUI(); } function setupUI() { @@ -107,11 +93,11 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var regions = []; for(var i = 0; i < sequenceSlots.length; i++) { - var slot = sequenceSlots[i]; - var index = skeleton.findSlotIndex(slot); - for (var name in skeleton.skin.attachments[index]) { + var slot = skeleton.findSlot(sequenceSlots[i]); + sequenceSlots[i] = slot; + var index = slot.data.index; + for (var name in skeleton.skin.attachments[index]) regions.push(skeleton.skin.attachments[index][name]); - } } return { @@ -138,17 +124,19 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var offset = active.bounds.offset; var size = active.bounds.size; - var x = offset.x + size.x + 100, offsetY = offset.y; + var x = offset.x + size.x + 100, offsetY = offset.y, zoom = 1; if (activeSkeleton === "Alien") { - renderer.camera.position.x = offset.x + size.x; - renderer.camera.position.y = offset.y + size.y / 2; + renderer.camera.position.x = offset.x + size.x + 400; + renderer.camera.position.y = offset.y + size.y / 2 + 450; + x += 400; + zoom = 0.31; } else { renderer.camera.position.x = offset.x + size.x; renderer.camera.position.y = offset.y + size.y / 2; x += 100; } - renderer.camera.viewportWidth = size.x * 2.4; - renderer.camera.viewportHeight = size.y * 1.4; + renderer.camera.viewportWidth = size.x * 2.4 / zoom; + renderer.camera.viewportHeight = size.y * 1.4 / zoom; renderer.resize(spine.webgl.ResizeMode.Fit); gl.clearColor(bgColor.r, bgColor.g, bgColor.b, bgColor.a); @@ -175,34 +163,21 @@ var imageChangesDemo = function(loadingComplete, bgColor) { var slotSize = size.y / 3; var maxSlotWidth = 0; var j = 0; - for (var i = 0; i < active.regions.length; i++) { + for (var i = 0, n = active.regions.length; i < n; i++) { var region = active.regions[i].region; - var scale = Math.min(slotSize / region.height, slotSize / region.width); + var scale = Math.min(slotSize / region.height, slotSize / region.width) / zoom; renderer.drawRegion(region, x, y, region.width * scale, region.height * scale); - var isVisible = false; for (var ii = 0; ii < active.slots.length; ii++) { - var slotName = active.slots[ii]; - var slotIndex = skeleton.findSlotIndex(slotName); - - for (var iii = 0; iii < skeleton.drawOrder.length; iii++) { - var slot = skeleton.drawOrder[iii]; - if (slot.data.index == slotIndex) { - if (slot.attachment != null) { - if (slot.attachment.name === active.regions[i].name) { - isVisible = true; - break; - } - } - } + var slot = active.slots[ii]; + if (slot.attachment && slot.attachment.name === region.name) { + renderer.rect(false, x, y, region.width * scale, region.height * scale, OUTLINE_COLOR); + break; } - if (isVisible) break; } - if (isVisible) renderer.rect(false, x, y, region.width * scale, region.height * scale, OUTLINE_COLOR); - maxSlotWidth = Math.max(maxSlotWidth, region.width * scale); - y += slotSize; + y += slotSize / zoom + 2; j++; if (j == 3) { x += maxSlotWidth + 10; @@ -213,9 +188,10 @@ var imageChangesDemo = function(loadingComplete, bgColor) { } renderer.end(); - - loadingScreen.draw(true); } + imageChangesDemo.loadingComplete = loadingComplete; + imageChangesDemo.render = render; + imageChangesDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/meshes.html b/spine-ts/webgl/demos/meshes.html index 748a1a76f..82b1b83d0 100644 --- a/spine-ts/webgl/demos/meshes.html +++ b/spine-ts/webgl/demos/meshes.html @@ -9,7 +9,7 @@
-
+


@@ -18,8 +18,8 @@
diff --git a/spine-ts/webgl/demos/meshes.js b/spine-ts/webgl/demos/meshes.js index 9b601a589..eaecb5c1e 100644 --- a/spine-ts/webgl/demos/meshes.js +++ b/spine-ts/webgl/demos/meshes.js @@ -1,24 +1,18 @@ -var meshesDemo = function(loadingComplete, bgColor) { +var meshesDemo = function(canvas, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, bounds; var timeKeeper, loadingScreen; var skeletons = {}; var activeSkeleton = "Orange Girl"; - var playButton, timeLine, isPlaying = true; + var playButton, timeline, isPlaying = true; var DEMO_NAME = "MeshesDemo"; if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("meshes-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } - + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); renderer.skeletonDebugRenderer.drawRegionAttachments = false; assetManager = spineDemos.assetManager; @@ -27,22 +21,14 @@ var meshesDemo = function(loadingComplete, bgColor) { assetManager.loadText(DEMO_NAME, "atlas2.atlas"); assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { + function loadingComplete () { timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - skeletons["Orange Girl"] = loadSkeleton("orangegirl", "animation"); - skeletons["Green Girl"] = loadSkeleton("greengirl", "animation"); - skeletons["Armor Girl"] = loadSkeleton("armorgirl", "animation"); - setupUI(); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + skeletons["Orange Girl"] = loadSkeleton("orangegirl", "animation"); + skeletons["Green Girl"] = loadSkeleton("greengirl", "animation"); + skeletons["Armor Girl"] = loadSkeleton("armorgirl", "animation"); + setupUI(); } function setupUI() { @@ -57,8 +43,8 @@ var meshesDemo = function(loadingComplete, bgColor) { playButton.click(playButtonUpdate); playButton.addClass("pause"); - timeLine = $("#meshes-timeline").data("slider"); - timeLine.changed = function (percent) { + timeline = $("#meshes-timeline").data("slider"); + timeline.changed = function (percent) { if (isPlaying) playButton.click(); if (!isPlaying) { var active = skeletons[activeSkeleton]; @@ -82,7 +68,7 @@ var meshesDemo = function(loadingComplete, bgColor) { activeSkeleton = $("#meshes-skeleton option:selected").text(); var active = skeletons[activeSkeleton]; var animationDuration = active.state.getCurrent(0).animation.duration; - timeLine.set(active.playTime / animationDuration); + timeline.set(active.playTime / animationDuration); }) renderer.skeletonDebugRenderer.drawBones = false; @@ -150,10 +136,9 @@ var meshesDemo = function(loadingComplete, bgColor) { if (isPlaying) { var animationDuration = state.getCurrent(0).animation.duration; active.playTime += delta; - while (active.playTime >= animationDuration) { + while (active.playTime >= animationDuration) active.playTime -= animationDuration; - } - timeLine.set(active.playTime / animationDuration); + timeline.set(active.playTime / animationDuration); state.update(delta); state.apply(skeleton); @@ -164,9 +149,10 @@ var meshesDemo = function(loadingComplete, bgColor) { renderer.drawSkeleton(skeleton, true); renderer.drawSkeletonDebug(skeleton); renderer.end(); - - loadingScreen.draw(true); } + meshesDemo.loadingComplete = loadingComplete; + meshesDemo.render = render; + meshesDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/skins.html b/spine-ts/webgl/demos/skins.html index 8acdf8d41..ba37b70c9 100644 --- a/spine-ts/webgl/demos/skins.html +++ b/spine-ts/webgl/demos/skins.html @@ -9,7 +9,7 @@
-
+


@@ -17,7 +17,8 @@
diff --git a/spine-ts/webgl/demos/skins.js b/spine-ts/webgl/demos/skins.js index 2c68faaf5..d41a45282 100644 --- a/spine-ts/webgl/demos/skins.js +++ b/spine-ts/webgl/demos/skins.js @@ -1,4 +1,4 @@ -var skinsDemo = function(loadingComplete, bgColor) { +var skinsDemo = function(canvas, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, offset, bounds; var timeKeeper, loadingScreen; @@ -10,13 +10,8 @@ var skinsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("skins-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -26,39 +21,30 @@ var skinsDemo = function(loadingComplete, bgColor) { assetManager.loadJson(DEMO_NAME, "demos.json"); input = new spine.webgl.Input(canvas); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "heroes.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").heroes); - skeleton = new spine.Skeleton(skeletonData); - skeleton.setSkinByName("Assassin"); - var stateData = new spine.AnimationStateData(skeleton.data); - stateData.defaultMix = 0.2; - stateData.setMix("roll", "run", 0); - stateData.setMix("jump", "run2", 0); - state = new spine.AnimationState(stateData); - setupAnimations(state); - state.apply(skeleton); - skeleton.updateWorldTransform(); - offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - setupUI(); - setupInput(); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "heroes.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").heroes); + skeleton = new spine.Skeleton(skeletonData); + skeleton.setSkinByName("Assassin"); + var stateData = new spine.AnimationStateData(skeleton.data); + stateData.defaultMix = 0.2; + stateData.setMix("roll", "run", 0); + stateData.setMix("jump", "run2", 0); + state = new spine.AnimationState(stateData); + setupAnimations(state); + state.apply(skeleton); + skeleton.updateWorldTransform(); + offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + setupUI(); + setupInput(); } function setupInput (){ @@ -218,9 +204,10 @@ var skinsDemo = function(loadingComplete, bgColor) { var height = scale * texture.getImage().height; renderer.drawTexture(texture, offset.x + bounds.x + 190, offset.y + bounds.y / 2 - height / 2 - 5, width, height); renderer.end(); - - loadingScreen.draw(true); } + skinsDemo.loadingComplete = loadingComplete; + skinsDemo.render = render; + skinsDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/spritesheets.html b/spine-ts/webgl/demos/spritesheets.html index c499bcb6a..79ea89b82 100644 --- a/spine-ts/webgl/demos/spritesheets.html +++ b/spine-ts/webgl/demos/spritesheets.html @@ -9,16 +9,16 @@
-
+

Time multiplier
- diff --git a/spine-ts/webgl/demos/spritesheets.js b/spine-ts/webgl/demos/spritesheets.js index c558cbfbe..7e8e416fc 100644 --- a/spine-ts/webgl/demos/spritesheets.js +++ b/spine-ts/webgl/demos/spritesheets.js @@ -1,4 +1,4 @@ -var spritesheetsDemo = function(loadingComplete, bgColor) { +var spritesheetsDemo = function(canvas, bgColor) { var SKELETON_ATLAS_COLOR = new spine.Color(0, 0.8, 0, 0.8); var FRAME_ATLAS_COLOR = new spine.Color(0.8, 0, 0, 0.8); @@ -16,13 +16,8 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("spritesheets-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -32,49 +27,41 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); input = new spine.webgl.Input(canvas); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - skeletonAtlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas1.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(skeletonAtlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").raptor); - skeleton = new spine.Skeleton(skeletonData); - var stateData = new spine.AnimationStateData(skeleton.data); - stateData.defaultMix = 0.5; - animationState = new spine.AnimationState(stateData); - animationState.setAnimation(0, "walk", true); - animationState.apply(skeleton); - skeleton.updateWorldTransform(); - offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - skeleton.x -= 60; + function loadingComplete () { + skeletonAtlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas1.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(skeletonAtlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").raptor); + skeleton = new spine.Skeleton(skeletonData); + var stateData = new spine.AnimationStateData(skeleton.data); + stateData.defaultMix = 0.5; + stateData.setMix("jump", "walk", 0.3); + animationState = new spine.AnimationState(stateData); + animationState.setAnimation(0, "walk", true); + animationState.apply(skeleton); + skeleton.updateWorldTransform(); + offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + skeleton.x -= 60; - skeletonSeq = new spine.Skeleton(skeletonData); - walkAnim = skeletonSeq.data.findAnimation("walk"); - walkAnim.apply(skeletonSeq, 0, 0, true, null, 1, true, false); - skeletonSeq.x += bounds.x + 150; + skeletonSeq = new spine.Skeleton(skeletonData); + walkAnim = skeletonSeq.data.findAnimation("walk"); + walkAnim.apply(skeletonSeq, 0, 0, true, null, 1, true, false); + skeletonSeq.x += bounds.x + 150; - viewportWidth = ((700 + bounds.x) - offset.x); - viewportHeight = ((0 + bounds.y) - offset.y); - resize(); - setupUI(); - setupInput(); + viewportWidth = ((700 + bounds.x) - offset.x); + viewportHeight = ((0 + bounds.y) - offset.y); + resize(); + setupUI(); + setupInput(); - $("#spritesheets-overlay").removeClass("overlay-hide"); - $("#spritesheets-overlay").addClass("overlay"); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + $("#spritesheets-overlay").removeClass("overlay-hide"); + $("#spritesheets-overlay").addClass("overlay"); } function setupUI () { @@ -107,7 +94,7 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { function resize () { renderer.camera.position.x = offset.x + viewportWidth / 2 - 25; - renderer.camera.position.y = offset.y + viewportHeight / 2 - 160; + renderer.camera.position.y = offset.y + viewportHeight / 2 - 100; renderer.camera.viewportWidth = viewportWidth * 1.2; renderer.camera.viewportHeight = viewportHeight * 1.2; renderer.resize(spine.webgl.ResizeMode.Fit); @@ -142,7 +129,7 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { animationState.update(delta); var current = animationState.getCurrent(0); - if (current.animation.name == "walk") current.time = walkLastTimePrecise; + if (current.animation.name == "walk") current.trackTime = walkLastTimePrecise; animationState.apply(skeleton); skeleton.updateWorldTransform(); @@ -154,9 +141,10 @@ var spritesheetsDemo = function(loadingComplete, bgColor) { renderer.drawSkeleton(skeleton, true); renderer.drawSkeleton(skeletonSeq, true); renderer.end(); - - loadingScreen.draw(true); } + spritesheetsDemo.loadingComplete = loadingComplete; + spritesheetsDemo.render = render; + spritesheetsDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/stretchyman.html b/spine-ts/webgl/demos/stretchyman.html index f2d31ecab..9b5dcbffc 100644 --- a/spine-ts/webgl/demos/stretchyman.html +++ b/spine-ts/webgl/demos/stretchyman.html @@ -9,12 +9,13 @@
-
+
Display bones
diff --git a/spine-ts/webgl/demos/stretchyman.js b/spine-ts/webgl/demos/stretchyman.js index 16dbc156f..459d6ff29 100644 --- a/spine-ts/webgl/demos/stretchyman.js +++ b/spine-ts/webgl/demos/stretchyman.js @@ -1,4 +1,4 @@ -var stretchymanDemo = function(loadingComplete, bgColor) { +var stretchymanDemo = function(canvas, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -26,13 +26,8 @@ var stretchymanDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("stretchyman-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -42,43 +37,33 @@ var stretchymanDemo = function(loadingComplete, bgColor) { assetManager.loadText(DEMO_NAME, "atlas2.atlas"); assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").stretchyman); - skeleton = new spine.Skeleton(skeletonData); - skeleton.setToSetupPose(); - skeleton.updateWorldTransform(); - var offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - for (var i = 0; i < controlBones.length; i++) hoverTargets.push(null); - state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); - state.setAnimation(0, "idle", true); + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").stretchyman); + skeleton = new spine.Skeleton(skeletonData); + skeleton.setToSetupPose(); + skeleton.updateWorldTransform(); + var offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + for (var i = 0; i < controlBones.length; i++) hoverTargets.push(null); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + state.setAnimation(0, "idle", true); - renderer.camera.position.x = offset.x + bounds.x / 2; - renderer.camera.position.y = offset.y + bounds.y / 2; + renderer.camera.position.x = offset.x + bounds.x / 2; + renderer.camera.position.y = offset.y + bounds.y / 2; - renderer.skeletonDebugRenderer.drawMeshHull = false; - renderer.skeletonDebugRenderer.drawMeshTriangles = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; - setupUI(); - setupInput(); - - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + setupUI(); + setupInput(); } function setupUI() { @@ -194,9 +179,10 @@ var stretchymanDemo = function(loadingComplete, bgColor) { } renderer.end(); gl.lineWidth(1); - - loadingScreen.draw(true); } + stretchymanDemo.loadingComplete = loadingComplete; + stretchymanDemo.render = render; + stretchymanDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/tank.html b/spine-ts/webgl/demos/tank.html index 0c9c6d803..0c6c7d054 100644 --- a/spine-ts/webgl/demos/tank.html +++ b/spine-ts/webgl/demos/tank.html @@ -9,15 +9,15 @@
-
+

Display bones
diff --git a/spine-ts/webgl/demos/tank.js b/spine-ts/webgl/demos/tank.js index 5cbeba3dc..86918d4a0 100644 --- a/spine-ts/webgl/demos/tank.js +++ b/spine-ts/webgl/demos/tank.js @@ -1,7 +1,7 @@ -var tankDemo = function(loadingComplete, bgColor) { +var tankDemo = function(canvas, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, offset, bounds; - var timeKeeper, loadingScreen; + var timeKeeper; var playButton, timeLine, isPlaying = true, playTime = 0; var DEMO_NAME = "TankDemo"; @@ -9,13 +9,8 @@ var tankDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("tank-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -24,41 +19,32 @@ var tankDemo = function(loadingComplete, bgColor) { assetManager.loadText(DEMO_NAME, "atlas2.atlas"); assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").tank); - skeleton = new spine.Skeleton(skeletonData); - state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); - state.setAnimation(0, "drive", true); - state.apply(skeleton); - skeleton.updateWorldTransform(); - offset = new spine.Vector2(); - bounds = new spine.Vector2(); - offset.x = -1204.22; - bounds.x = 1914.52; - bounds.y = 965.78; - // skeleton.getBounds(offset, bounds); + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").tank); + skeleton = new spine.Skeleton(skeletonData); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + state.setAnimation(0, "drive", true); + state.apply(skeleton); + skeleton.updateWorldTransform(); + offset = new spine.Vector2(); + bounds = new spine.Vector2(); + offset.x = -1204.22; + bounds.x = 1914.52; + bounds.y = 965.78; + // skeleton.getBounds(offset, bounds); - renderer.skeletonDebugRenderer.drawRegionAttachments = false; - renderer.skeletonDebugRenderer.drawMeshHull = false; - renderer.skeletonDebugRenderer.drawMeshTriangles = false; + renderer.skeletonDebugRenderer.drawRegionAttachments = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; - setupUI(); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + setupUI(); } function setupUI() { @@ -126,9 +112,10 @@ var tankDemo = function(loadingComplete, bgColor) { renderer.drawSkeleton(skeleton, true); renderer.drawSkeletonDebug(skeleton, true); renderer.end(); - - loadingScreen.draw(true); } + tankDemo.loadingComplete = loadingComplete; + tankDemo.render = render; + tankDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/transforms.html b/spine-ts/webgl/demos/transforms.html index 6b2ec36ff..9bc4d711b 100644 --- a/spine-ts/webgl/demos/transforms.html +++ b/spine-ts/webgl/demos/transforms.html @@ -9,16 +9,16 @@
-
+
Rotation offset

Translation mix -
+
- diff --git a/spine-ts/webgl/demos/transforms.js b/spine-ts/webgl/demos/transforms.js index fd999c6d7..8e984b2b0 100644 --- a/spine-ts/webgl/demos/transforms.js +++ b/spine-ts/webgl/demos/transforms.js @@ -1,4 +1,4 @@ -var transformsDemo = function(loadingComplete, bgColor) { +var transformsDemo = function(canvas, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -6,7 +6,7 @@ var transformsDemo = function(loadingComplete, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, bounds; - var timeKeeper, loadingScreen; + var timeKeeper; var rotateHandle; var target = null; var hoverTargets = [null, null, null]; @@ -20,13 +20,8 @@ var transformsDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("transforms-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -36,45 +31,35 @@ var transformsDemo = function(loadingComplete, bgColor) { assetManager.loadJson(DEMO_NAME, "demos.json"); input = new spine.webgl.Input(canvas); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").transforms); - skeleton = new spine.Skeleton(skeletonData); - skeleton.setToSetupPose(); - skeleton.updateWorldTransform(); - var offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); - skeleton.setToSetupPose(); - skeleton.updateWorldTransform(); - rotateHandle = skeleton.findBone("rotate-handle"); + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").transforms); + skeleton = new spine.Skeleton(skeletonData); + skeleton.setToSetupPose(); + skeleton.updateWorldTransform(); + var offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + skeleton.setToSetupPose(); + skeleton.updateWorldTransform(); + rotateHandle = skeleton.findBone("rotate-handle"); - renderer.camera.position.x = offset.x + bounds.x / 2; - renderer.camera.position.y = offset.y + bounds.y / 2; + renderer.camera.position.x = offset.x + bounds.x / 2; + renderer.camera.position.y = offset.y + bounds.y / 2; - renderer.skeletonDebugRenderer.drawRegionAttachments = false; - renderer.skeletonDebugRenderer.drawMeshHull = false; - renderer.skeletonDebugRenderer.drawMeshTriangles = false; + renderer.skeletonDebugRenderer.drawRegionAttachments = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; - setupUI(); - setupInput(); - - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + setupUI(); + setupInput(); } function setupUI() { @@ -183,9 +168,10 @@ var transformsDemo = function(loadingComplete, bgColor) { } gl.lineWidth(1); renderer.end(); - - loadingScreen.draw(true); } + transformsDemo.loadingComplete = loadingComplete; + transformsDemo.render = render; + transformsDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/transitions.html b/spine-ts/webgl/demos/transitions.html index 087c856e2..718d4a353 100644 --- a/spine-ts/webgl/demos/transitions.html +++ b/spine-ts/webgl/demos/transitions.html @@ -9,14 +9,15 @@
-
+
Time multiplier -
+

+
diff --git a/spine-ts/webgl/demos/transitions.js b/spine-ts/webgl/demos/transitions.js index 968aab432..263391918 100644 --- a/spine-ts/webgl/demos/transitions.js +++ b/spine-ts/webgl/demos/transitions.js @@ -1,11 +1,10 @@ -var transitionsDemo = function(loadingComplete, bgColor) { +var transitionsDemo = function(canvas, loadingComplete, bgColor) { var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var canvas, gl, renderer, input, assetManager; var skeleton, skeletonNoMix, state, stateNoMix, bounds; var timeSlider, timeSliderLabel; var timeKeeper; - var loadingScreen; var DEMO_NAME = "TransitionsDemo"; @@ -15,13 +14,9 @@ var transitionsDemo = function(loadingComplete, bgColor) { timeSlider = $("#transitions-timeslider").data("slider"); timeSlider.set(0.5); timeSliderLabel = $("#transitions-timeslider-label")[0]; - canvas = document.getElementById("transitions-canvas"); + canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); assetManager = spineDemos.assetManager; @@ -33,66 +28,57 @@ var transitionsDemo = function(loadingComplete, bgColor) { input = new spine.webgl.Input(canvas); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - skeleton = loadSkeleton("spineboy"); - skeletonNoMix = new spine.Skeleton(skeleton.data); - state = createState(0.25); - state.multipleMixing = true; - setAnimations(state, 0); - stateNoMix = createState(0); - setAnimations(stateNoMix, -0.25); + function loadingComplete () { + skeleton = loadSkeleton("spineboy"); + skeletonNoMix = new spine.Skeleton(skeleton.data); + state = createState(0.25); + state.multipleMixing = true; + setAnimations(state, 0, 0); + stateNoMix = createState(0); + setAnimations(stateNoMix, -0.25, 0); - state.apply(skeleton); - skeleton.updateWorldTransform(); - bounds = { offset: new spine.Vector2(), size: new spine.Vector2() }; - skeleton.getBounds(bounds.offset, bounds.size, []); - setupInput(); - $("#transitions-overlay").removeClass("overlay-hide"); - $("#transitions-overlay").addClass("overlay"); - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + state.apply(skeleton); + skeleton.updateWorldTransform(); + bounds = { offset: new spine.Vector2(), size: new spine.Vector2() }; + skeleton.getBounds(bounds.offset, bounds.size, []); + setupInput(); + $("#transitions-overlay").removeClass("overlay-hide"); + $("#transitions-overlay").addClass("overlay"); } function setupInput() { - input.addListener({ - down: function(x, y) { }, - up: function(x, y) { }, - moved: function(x, y) { }, - dragged: function(x, y) { } + $("#transitions-die").click(function () { + var entry = state.setAnimation(0, "death", false); + setAnimations(state, 0, true, 0); + entry.next.mixDuration = 0.1; + + var entry = stateNoMix.setAnimation(0, "death", false); + setAnimations(stateNoMix, -0.25, -0.25 + -0.1); }); } - function createState(mix) { + function createState (mix) { var stateData = new spine.AnimationStateData(skeleton.data); stateData.defaultMix = mix; var state = new spine.AnimationState(stateData); return state; } - function setAnimations(state, mix) { - state.addAnimation(0, "idle", true, 0.7); - state.addAnimation(0, "walk", true, 0.7); - state.addAnimation(0, "idle", true, 0.8); - state.addAnimation(0, "run", true, 0.7); - state.addAnimation(0, "idle", true, 0.8); + function setAnimations (state, delay, first) { + state.addAnimation(0, "idle", true, first); state.addAnimation(0, "walk", true, 0.6); - state.addAnimation(0, "run", true, 0.6); - state.addAnimation(0, "jump", false, 0.6); - state.addAnimation(0, "run", true, mix); + state.addAnimation(0, "jump", false, 1); + state.addAnimation(0, "run", true, delay); + state.addAnimation(0, "walk", true, 1.2); + state.addAnimation(0, "run", true, 0.5); + state.addAnimation(0, "jump", false, 1); + state.addAnimation(0, "run", true, delay); state.addAnimation(0, "jump", true, 0.5); - state.addAnimation(0, "run", true, mix).listener = { + state.addAnimation(0, "walk", true, delay).listener = { start: function (trackIndex) { - setAnimations(state, mix); + setAnimations(state, delay, 0.6); } }; } @@ -134,7 +120,7 @@ var transitionsDemo = function(loadingComplete, bgColor) { state.update(delta); state.apply(skeleton); skeleton.updateWorldTransform(); - skeleton.x = -300; + skeleton.x = -200; skeleton.y = -100; renderer.drawSkeleton(skeleton, true); @@ -145,9 +131,10 @@ var transitionsDemo = function(loadingComplete, bgColor) { skeletonNoMix.y = -100; renderer.drawSkeleton(skeletonNoMix, true); renderer.end(); - - loadingScreen.draw(true); } + + transitionsDemo.loadingComplete = loadingComplete; + transitionsDemo.render = render; + transitionsDemo.DEMO_NAME = DEMO_NAME; init(); - return render; }; \ No newline at end of file diff --git a/spine-ts/webgl/demos/utils.js b/spine-ts/webgl/demos/utils.js index 3ddf94919..9b1d71241 100644 --- a/spine-ts/webgl/demos/utils.js +++ b/spine-ts/webgl/demos/utils.js @@ -3,9 +3,10 @@ var spineDemos = { HOVER_COLOR_OUTER: new spine.Color(1, 1, 1, 1), NON_HOVER_COLOR_INNER: new spine.Color(0.478, 0, 0, 0.5), NON_HOVER_COLOR_OUTER: new spine.Color(1, 0, 0, 0.8), - assetManager: new spine.SharedAssetManager("http://esotericsoftware.com/demos/exports/"), + assetManager: new spine.SharedAssetManager("assets/"), demos: [], - loopRunning: false + loopRunning: false, + canvases: [] }; (function () { var timeKeeper = new spine.TimeKeeper(); @@ -13,40 +14,81 @@ var spineDemos = { timeKeeper.update(); if (spineDemos.log) console.log(timeKeeper.delta + ", " + timeKeeper.framesPerSecond); requestAnimationFrame(loop); - var demos = spineDemos.demos; + var demos = spineDemos.demos; for (var i = 0; i < demos.length; i++) { var demo = demos[i]; var canvas = demo.canvas; - var renderFunc = demo.renderFunc; - if (demo.visible) { - if (spineDemos.log) console.log("Rendering " + canvas.id); - renderFunc(); + + checkElementVisible(demo); + + if (!spineDemos.assetManager.isLoadingComplete(demo.DEMO_NAME)) { + if (demo.visible) { + if (canvas.parentElement != demo.placeholder) { + $(canvas).detach(); + demo.placeholder.appendChild(canvas); + } + demo.loadingScreen.draw(); + } + } else { + if (!demo.loaded) { + demo.loadingComplete(); + demo.loaded = true; + } + + if (demo.visible) { + if (canvas.parentElement != demo.placeholder) { + $(canvas).detach(); + demo.placeholder.appendChild(canvas); + } + if (spineDemos.log) console.log("Rendering " + canvas.id); + demo.render(); + demo.loadingScreen.draw(true); + } } } } - function checkElementVisible (demo) { - var rect = demo.canvas.getBoundingClientRect(); - var x = 0, y = 0; - var width = (window.innerHeight || document.documentElement.clientHeight); - var height = (window.innerWidth || document.documentElement.clientWidth); - demo.visible = rect.left < x + width && rect.right > x && rect.top < y + height && rect.bottom > y; - }; + function checkElementVisible(demo) { + const rect = demo.placeholder.getBoundingClientRect(); + const windowHeight = (window.innerHeight || document.documentElement.clientHeight); + const windowWidth = (window.innerWidth || document.documentElement.clientWidth); + const vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0); + const horInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0); - spineDemos.setupRendering = function (canvas, renderFunc) { - var demo = {canvas: canvas, renderFunc: renderFunc, visible: false}; + demo.visible = (vertInView && horInView); + } + + function createCanvases (numCanvases) { + for (var i = 0; i < numCanvases; i++) { + var canvas = document.createElement("canvas"); + canvas.ctx = new spine.webgl.ManagedWebGLRenderingContext(canvas, { alpha: false }); + canvas.id = "canvas-" + i; + spineDemos.canvases.push(canvas); + } + } + + spineDemos.init = function () { + createCanvases(4); + loadSliders(); + requestAnimationFrame(loop); + } + + spineDemos.addDemo = function (demo, placeholder) { + var canvas = spineDemos.canvases[spineDemos.demos.length % spineDemos.canvases.length]; + demo(canvas); + demo.placeholder = placeholder; + demo.canvas = canvas; + demo.visible = false; + var renderer = new spine.webgl.SceneRenderer(canvas, canvas.ctx.gl); + demo.loadingScreen = new spine.webgl.LoadingScreen(renderer); $(window).on('DOMContentLoaded load resize scroll', function() { checkElementVisible(demo); }); checkElementVisible(demo); - if (!spineDemos.loopRunning) { - loop(); - spineDemos.loopRunning = true; - } spineDemos.demos.push(demo); - }; + } - spineDemos.loadSliders = function () { + loadSliders = function () { $(window).resize(function() { $(".slider").each(function () { $(this).data("slider").resized(); diff --git a/spine-ts/webgl/demos/vine.html b/spine-ts/webgl/demos/vine.html index 89c7af28b..fada25492 100644 --- a/spine-ts/webgl/demos/vine.html +++ b/spine-ts/webgl/demos/vine.html @@ -9,15 +9,15 @@
-
+

Display bones & path
- diff --git a/spine-ts/webgl/demos/vine.js b/spine-ts/webgl/demos/vine.js index 5f1029954..6b0e61990 100644 --- a/spine-ts/webgl/demos/vine.js +++ b/spine-ts/webgl/demos/vine.js @@ -1,4 +1,4 @@ -var vineDemo = function(loadingComplete, bgColor) { +var vineDemo = function(canvas, bgColor) { var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); @@ -6,7 +6,7 @@ var vineDemo = function(loadingComplete, bgColor) { var canvas, gl, renderer, input, assetManager; var skeleton, state, bounds; - var timeKeeper, loadingScreen; + var timeKeeper; var target = null; var hoverTargets = [null, null, null, null, null, null]; var controlBones = ["base", "vine-control1", "vine-control2", "vine-control3", "vine-control4"]; @@ -18,13 +18,8 @@ var vineDemo = function(loadingComplete, bgColor) { if (!bgColor) bgColor = new spine.Color(235 / 255, 239 / 255, 244 / 255, 1); function init () { - canvas = document.getElementById("vine-canvas"); canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; - gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); - if (!gl) { - alert('WebGL is unavailable.'); - return; - } + gl = canvas.ctx.gl; renderer = new spine.webgl.SceneRenderer(canvas, gl); input = new spine.webgl.Input(canvas); @@ -34,44 +29,34 @@ var vineDemo = function(loadingComplete, bgColor) { assetManager.loadText(DEMO_NAME, "atlas2.atlas"); assetManager.loadJson(DEMO_NAME, "demos.json"); timeKeeper = new spine.TimeKeeper(); - loadingScreen = new spine.webgl.LoadingScreen(renderer); - requestAnimationFrame(load); } - function load () { - timeKeeper.update(); - if (assetManager.isLoadingComplete(DEMO_NAME)) { - var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { - return assetManager.get(DEMO_NAME, path); - }); - var atlasLoader = new spine.AtlasAttachmentLoader(atlas); - var skeletonJson = new spine.SkeletonJson(atlasLoader); - var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").vine); - skeleton = new spine.Skeleton(skeletonData); - skeleton.setToSetupPose(); - skeleton.updateWorldTransform(); - var offset = new spine.Vector2(); - bounds = new spine.Vector2(); - skeleton.getBounds(offset, bounds, []); - state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); - state.setAnimation(0, "animation", true); - state.apply(skeleton); - skeleton.updateWorldTransform(); + function loadingComplete () { + var atlas = new spine.TextureAtlas(assetManager.get(DEMO_NAME, "atlas2.atlas"), function(path) { + return assetManager.get(DEMO_NAME, path); + }); + var atlasLoader = new spine.AtlasAttachmentLoader(atlas); + var skeletonJson = new spine.SkeletonJson(atlasLoader); + var skeletonData = skeletonJson.readSkeletonData(assetManager.get(DEMO_NAME, "demos.json").vine); + skeleton = new spine.Skeleton(skeletonData); + skeleton.setToSetupPose(); + skeleton.updateWorldTransform(); + var offset = new spine.Vector2(); + bounds = new spine.Vector2(); + skeleton.getBounds(offset, bounds, []); + state = new spine.AnimationState(new spine.AnimationStateData(skeleton.data)); + state.setAnimation(0, "animation", true); + state.apply(skeleton); + skeleton.updateWorldTransform(); - renderer.camera.position.x = offset.x + bounds.x / 2; - renderer.camera.position.y = offset.y + bounds.y / 2; + renderer.camera.position.x = offset.x + bounds.x / 2; + renderer.camera.position.y = offset.y + bounds.y / 2; - renderer.skeletonDebugRenderer.drawMeshHull = false; - renderer.skeletonDebugRenderer.drawMeshTriangles = false; + renderer.skeletonDebugRenderer.drawMeshHull = false; + renderer.skeletonDebugRenderer.drawMeshTriangles = false; - setupUI(); - setupInput(); - - loadingComplete(canvas, render); - } else { - loadingScreen.draw(); - requestAnimationFrame(load); - } + setupUI(); + setupInput(); } function setupUI() { @@ -187,9 +172,10 @@ var vineDemo = function(loadingComplete, bgColor) { } gl.lineWidth(1); renderer.end(); - - loadingScreen.draw(true); } + vineDemo.loadingComplete = loadingComplete; + vineDemo.render = render; + vineDemo.DEMO_NAME = DEMO_NAME; init(); }; \ No newline at end of file diff --git a/spine-unity/Assets/spine-unity/Asset Types/Editor/AtlasAssetInspector.cs b/spine-unity/Assets/spine-unity/Asset Types/Editor/AtlasAssetInspector.cs index 2ac1d1293..2ea42ca3b 100644 --- a/spine-unity/Assets/spine-unity/Asset Types/Editor/AtlasAssetInspector.cs +++ b/spine-unity/Assets/spine-unity/Asset Types/Editor/AtlasAssetInspector.cs @@ -120,7 +120,7 @@ namespace Spine.Unity.Editor { } if (materials.arraySize == 0) { - EditorGUILayout.HelpBox("Missing materials", MessageType.Error); + EditorGUILayout.HelpBox("No materials", MessageType.Error); return; } @@ -133,6 +133,15 @@ namespace Spine.Unity.Editor { } } + EditorGUILayout.Space(); + if (SpineInspectorUtility.LargeCenteredButton(SpineInspectorUtility.TempContent("Set Mipmap Bias to " + SpineEditorUtilities.DEFAULT_MIPMAPBIAS))) { + foreach (var m in atlasAsset.materials) { + var texture = m.mainTexture; + texture.mipMapBias = SpineEditorUtilities.DEFAULT_MIPMAPBIAS; + } + Debug.Log("Texture mipmap bias set to " + SpineEditorUtilities.DEFAULT_MIPMAPBIAS); + } + EditorGUILayout.Space(); if (atlasFile.objectReferenceValue != null) { if (SpineInspectorUtility.LargeCenteredButton(SpriteSlicesLabel)) { @@ -142,6 +151,8 @@ namespace Spine.Unity.Editor { } } + EditorGUILayout.Space(); + #if REGION_BAKING_MESH if (atlasFile.objectReferenceValue != null) { Atlas atlas = asset.GetAtlas(); diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs index e58db714c..d23a1f614 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs @@ -188,6 +188,8 @@ namespace Spine.Unity.Editor { const string SHOW_HIERARCHY_ICONS_KEY = "SPINE_SHOW_HIERARCHY_ICONS"; public static bool showHierarchyIcons = DEFAULT_SHOW_HIERARCHY_ICONS; + internal const float DEFAULT_MIPMAPBIAS = -0.5f; + public const float DEFAULT_SCENE_ICONS_SCALE = 1f; public const string SCENE_ICONS_SCALE_KEY = "SPINE_SCENE_ICONS_SCALE"; diff --git a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs index 363c3441b..74e656910 100644 --- a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs +++ b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs @@ -212,6 +212,7 @@ namespace Spine.Unity.Modules.AttachmentTools { public static class SpriteAtlasRegionExtensions { internal const TextureFormat SpineTextureFormat = TextureFormat.RGBA32; + internal const float DefaultMipmapBias = -0.5f; internal const bool UseMipMaps = false; internal const float DefaultScale = 0.01f; @@ -440,6 +441,7 @@ namespace Spine.Unity.Modules.AttachmentTools { // Fill a new texture with the collected attachment textures. var newTexture = new Texture2D(maxAtlasSize, maxAtlasSize, textureFormat, mipmaps); + newTexture.mipMapBias = SpriteAtlasRegionExtensions.DefaultMipmapBias; newTexture.anisoLevel = texturesToPack[0].anisoLevel; newTexture.name = newName; var rects = newTexture.PackTextures(texturesToPack.ToArray(), padding, maxAtlasSize);